Как обновить Ruby Gems через прокси (ISA-NTLM)

Брандмауэр, за которым я работаю, работает под управлением Microsoft ISA-сервера в режиме NTLM-only. У кого-нибудь есть успех в установке / обновлении своих драгоценных камней Ruby через гем SSPI Ruby или другим способом?

... или я просто ленив?

Примечание: rubysspi-1.2.4 не работает.

Это также работает для "igem", части проекта IronRuby.

Ответов (20)

Решение

Мне не удалось заставить свою работу работать с переключателем командной строки, но я смог сделать это, просто установив свою HTTP_PROXY переменную среды. (Обратите внимание, что регистр кажется важным). У меня есть командный файл, в котором есть такая строка:

SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%

Я установил четыре ссылочные переменные, прежде чем, очевидно, перейду к этой строке. Например, мое имя пользователя «wolfbyte», мой пароль «секретный», а мой прокси-сервер называется «pigsy» и работает на порту 8080:

SET HTTP_PROXY=http://wolfbyte:[email protected]:8080

Возможно, вы захотите быть осторожными, как вы это сделаете, потому что он хранит ваш пароль в виде обычного текста в сеансе машины, но я не думаю, что это должно быть слишком большой проблемой.

Обходной путь - установить http://web.archive.org/web/20060913093359/http://apserver.sourceforge.net:80/ на локальном компьютере, настроить его и запускать драгоценные камни через этот прокси.

  • Установка: просто скачайте apserver 097 (а не экспериментальный 098!) И распакуйте.
  • Настроить: отредактируйте файл server.cfg и поместите значения для вашего прокси-сервера MS в PARENT_PROXYи PARENT_PROXY_PORT. Введите значения DOMAIN и USER. Оставьте ПАРОЛЬ пустым (ничего после двоеточия) - вам будет предложено запустить его.
  • Запускаем apserver: cd aps097; python main.py
  • Выполнить самоцветы: gem install—http-proxy http://localhost:5865/ library

Если у вас возникли проблемы с аутентификацией через прокси-сервер, обязательно установите переменные среды точно в следующем формате:

set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password

user:[email protected] Синтаксис , кажется , не работать , и есть также некоторые плохо именованные переменные окружения , плавающие вокруг на переполнение стека и различных сообщений на форуме.

Также имейте в виду, что загрузка драгоценных камней может занять некоторое время. Сначала я подумал, что это не работает, но, проявив немного терпения, они начали загрузку, как и ожидалось.

Я пробовал некоторые из этих решений, и ни одно из них не помогло. Наконец-то я нашел решение, которое мне подходит:

gem install -p http://proxy_ip:proxy_port rails

используя -p параметр для передачи прокси. Я использую Gem версии 1.9.1.

Я работаю за прокси и только что установил SASS, загрузив его прямо с http://rubygems.org .

Я тогда побежал sudo gem install [path/to/downloaded/gem/file] . Я не могу сказать, что это сработает для всех драгоценных камней, но некоторым людям это может помочь.

rubysspi-1.3.1 у меня работал в Windows 7, используя инструкции с этой страницы:

http://www.stuartellis.eu/articles/installing-ruby/

Если вы используете систему * nix, используйте это:

export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}

а затем попробуйте:

gem install ${gem_name}

Это полностью сработало:

gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name

Это отлично решило мою проблему:

gem install -p http://proxy_ip:proxy_port compass

Возможно, вам потребуется добавить к нему свое имя пользователя и пароль:

gem install -p http://[username]:[password]@proxy_ip:proxy_port compass

Вместо того, чтобы редактировать командные файлы (что может потребоваться для других гемов Ruby, например Bundler), вероятно, лучше сделать это один раз и сделать это правильно.

В Windows, за моим корпоративным прокси, все, что мне нужно было сделать, это добавить HTTP_PROXY переменную среды в мою систему.

  1. Пуск -> щелкните правой кнопкой мыши Компьютер -> Свойства
  2. Выберите «Расширенные настройки системы».
  3. Нажмите Advanced -> Environment Variables.
  4. Создайте новую системную переменную с именем " HTTP_PROXY" и установите значение для вашего прокси-сервера.
  5. Перезагрузитесь или выйдите и снова войдите

В зависимости от ваших требований к аутентификации HTTP_PROXY значение может быть таким простым, как:

http://proxy-server-name

Или более сложный, как указывали другие

http://username:[email protected]:port-number

Если вы находитесь за прокси-сервером, вы можете перейти к загрузкам Ruby , щелкнуть «Загрузить», что приведет к загрузке указанного обновления (или Gem) в желаемое место.

Затем через командную строку Ruby перейдите в загруженное место, используя: pushd [directory]

например: pushd D:\Setups

затем выполните следующую команду: gem install [update name] --local

например: gem install rubygems-update --local .

Протестировано в Windows 7 с обновлением Ruby версии 2.4.1.

Для проверки используйте следующую команду: ruby -v

Это сработало для меня в окне Windows:

set HTTP_PROXY=http://server:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=userparssword
set HTTPS_PROXY=http://server:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=userpassword

У меня есть командный файл с этими строками, который я использую для установки значений среды, когда мне это нужно.

Уловка, в моем случае, заключалась в HTTPS_PROXY наборах. Без них я всегда получал ошибку аутентификации прокси 407.

Создайте файл .gemrc (в / etc / gemrc или ~ / .gemrc или, например, с помощью chef gem в / opt / chef / embedded / etc / gemrc), содержащий:

http_proxy: http://proxy:3128

Тогда можно gem install как обычно.

Если вы хотите использовать прокси SOCKS5, вы можете попробовать rubygems-socksproxy https://github.com/gussan/rubygems-socksproxy .

У меня работает на OSX 10.9.3.

для всех, кто использует SSH-туннель; вы можете создать версию gem команды, использующую прокси-сервер SOCKS:

  1. Установить socksifyс помощью gem install socksify(вам нужно будет сделать этот шаг, по крайней мере, без прокси)
  2. Скопируйте существующий gem exe

    cp $(command which gem) /usr/local/bin/proxy_gem
    
  3. Откройте его в своем любимом редакторе и добавьте вверху (после шебанга)

    require 'socksify'
    
    if ENV['SOCKS_PROXY']
      require 'socksify'
      host, port = ENV['SOCKS_PROXY'].split(':')
      TCPSocket.socks_server = host || 'localhost'
      TCPSocket.socks_port = port.to_i || 1080
    end
    
  4. Настройте свой туннель

    ssh -D 8123 -f -C -q -N [email protected]
    
  5. Запустите команду gem с помощью proxy_gem

    SOCKS_PROXY=localhost:8123 proxy_gem push mygem
    

Быстрый ответ: добавьте конфигурацию прокси с параметром для установки / обновления

gem install --http-proxy http://host:port/ package_name

gem update --http-proxy http://host:port/ package_name

Я использую cntlm ( http://cntlm.sourceforge.net/ ) на работе. Конфигурация очень похожа на ntlmaps.

Отлично работает, а также позволяет мне подключить свой Ubuntu к прокси-серверу ISA.

Посетите http://cntlm.wiki.sourceforge.net/ для получения дополнительной информации.

По этой теме имеется множество сообщений, и, чтобы помочь другим сэкономить часы на пробных различных решениях, вот окончательный результат моих часов возни.

На данный момент в Интернете есть три решения: rubysspi apserver cntlm

rubysspi работает только на компьютере с Windows, AFAIK, поскольку он полагается на библиотеку Win32Api. Так что, если вы используете Windows, пытаясь запустить прокси, это решение для вас. Если вы используете дистрибутив Linux, вам не повезло.

apserver кажется мертвым проектом. Ссылка, указанная в сообщениях, которые я видел, ведет на страницу 404 на sourceforge. Ищу "апсервер" на sourceforge ничего не возвращает.

Ссылка sourceforge для cntlm, которую я видел, перенаправляет на http://cntlm.awk.cz/ , но время ожидания истекло. Поиск на sourceforge обнаруживает эту ссылку, которая действительно работает: http://sourceforge.net/projects/cntlm/

После загрузки и настройки cntlm мне удалось установить гем через прокси, так что это кажется лучшим решением для дистрибутивов Linux.

Для ОС Windows я использовал Fiddler, чтобы обойти эту проблему.

  1. Установите / запустите Fiddler с www.fiddler2.com
  2. Запустить драгоценный камень:

    $ gem install --http-proxy http://localhost:8888 $gem_name
    

Я пробовал все вышеперечисленные решения, но ни одно из них не помогло. Если вы используете linux / macOS, я настоятельно рекомендую использовать tsocks через туннель ssh. Что вам нужно для того, чтобы эта установка заработала, так это машина, на которой вы можете войти через ssh, и в дополнение к этому установлена ​​программа под названием tsocks.

Идея состоит в том, чтобы создать динамический туннель через SSH (прокси socks5). Затем мы настраиваем tsocks для использования этого туннеля и для запуска наших приложений, в данном случае:

tsocks gem install ...

или для учета рельсов 3.0:

tsocks bundle install

Более подробное руководство можно найти в разделе:

http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/

Несмотря на то, что процедура написана для Ubuntu, она должна быть применима ко всем машинам на базе Unix. Альтернативой tsocks для Windows является FreeCap ( http://www.freecap.ru/eng/ ). Жизнеспособный клиент SSH для Windows называется шпатлевкой.