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

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

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

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

Это также работает для "Igem", часть проекта IronRuby

18 ответов

Решение

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

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

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

SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080

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

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

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

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

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

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

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

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

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

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

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

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

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

http_proxy: http://proxy:3128

Тогда ты можешь gem install по-прежнему.

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

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

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

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

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

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

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

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

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

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

gem update --http-proxy http://host:port/ package_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 на окнах называется замазкой.

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

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

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

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

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

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

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

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

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

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

Это работало для меня в коробке 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.

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

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

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

gem install ${gem_name}

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

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

Если за прокси-сервером вы можете перейти к загрузкам 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

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

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

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

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

http://proxy-server-name

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

http://username:password@proxy-server-name:port-number

Если вы хотите использовать 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 user@proxy
    
  5. Запустите команду gem с помощью proxy_gem

    SOCKS_PROXY=localhost:8123 proxy_gem push mygem
    
Другие вопросы по тегам