如何从代理(ISA-NTLM)后面更新Ruby Gems

Bre*_*tra 226 ruby proxy rubygems ironruby

我所在的防火墙是以NTLM模式运行Microsoft ISA服务器.哈希是否有人通过Ruby SSPI gem或其他方法成功获得Ruby宝石安装/更新?

......还是我只是懒惰?

注意:rubysspi-1.2.4不起作用.

这也适用于"igem",这是IronRuby项目的一部分

小智 213

对于Windows操作系统,我使用Fiddler来解决这个问题.

  1. 从www.fiddler2.com安装/运行Fiddler
  2. 运行gem:

    $ gem install --http-proxy http://localhost:8888 $gem_name
    
    Run Code Online (Sandbox Code Playgroud)

  • 这对我有用.请注意,在所有情况下都不需要Fiddler.只需`gem install --http-proxy http://COMPANY.PROXY.ADDRESS $ gem_name`就是我所需要的. (34认同)
  • 工作了一个款待,比ntlmaps和cntlm容易得多. (3认同)

Mik*_*llo 212

我无法通过命令行开关让我的工作,但我只能通过设置我的HTTP_PROXY环境变量来做到这一点.(注意案例似乎很重要).我有一个批处理文件,其中包含这样的行:

SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
Run Code Online (Sandbox Code Playgroud)

在我明确到达这一行之前,我设置了四个引用的变量.例如,如果我的用户名是"wolfbyte",我的密码是"秘密",我的代理名为"pigsy",并在端口8080上运行:

SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
Run Code Online (Sandbox Code Playgroud)

您可能需要小心如何管理它,因为它在机器的会话中以明文形式存储您的密码,但我不认为它应该是一个太大的问题.

  • 仅供参考,在Windows中,您可以将设置的http_proxy行添加到gem.bat,这样您就不必每次都记得设置代理. (13认同)
  • @spoulson如果需要域,则需要对反斜杠进行URI编码,例如http:// domain%5Cuserid @ server:port. (11认同)
  • 似乎'gem'无法通过http_proxy env var或--http-proxy参数识别代理字符串中的反斜杠.例如,从我的Ubuntu框--http-proxy http:// domain \\ userid @ server:port给出错误:"无效参数: - http-proxy ..."; 幸运的是,我的代理服务器不需要域规范,没有它就可以使用gem. (6认同)

小智 129

这完全奏效了:

gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
Run Code Online (Sandbox Code Playgroud)

  • 这是最新的答案,它也适用于Windows.我不得不添加我的用户名和密码:gem install --http-proxy http:// [_user_]:[_ password_] @ [_server_]:[_ port_] (15认同)
  • 我在 bash 配置文件中添加了一个别名:`alias geminstall='gem install --http-proxy ${http_proxy}'` 让我的生活更轻松。 (2认同)

Jas*_*ete 48

我一直在使用cntlm(http://cntlm.sourceforge.net/).配置与ntlmaps非常相似.

效果很好,还允许我将我的Ubuntu盒连接到ISA代理.

查看http://cntlm.wiki.sourceforge.net/了解更多信息

  • 这是所有尝试过的最痛苦的方式.在Ubuntu/Debian上,我执行apt-get install cntlm,编辑config然后导出http_proxy ="http:// localhost:3128".作品! (2认同)

kfo*_*fox 39

我尝试了其中一些解决方案,但都没有奏效.我终于找到了适合我的解决方案:

gem install -p http://proxy_ip:proxy_port rails
Run Code Online (Sandbox Code Playgroud)

使用-p参数传递代理.我正在使用Gem版本1.9.1.


Hom*_*Tom 16

这完全解决了我的问题:

gem install -p http://proxy_ip:proxy_port compass
Run Code Online (Sandbox Code Playgroud)

您可能需要向其添加用户名和密码:

gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
Run Code Online (Sandbox Code Playgroud)


小智 16

创建一个.gemrc文件(在/ etc/gemrc或〜/ .gemrc中,或者例如在/ opt/chef/embedded/etc/gemrc中使用chef gem),其中包含:

http_proxy: http://proxy:3128
Run Code Online (Sandbox Code Playgroud)

那你gem install就像往常一样.


Ben*_*ton 10

如果您在通过代理进行身份验证时遇到问题,请确保以下面的格式设置环境变量:

set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password
Run Code Online (Sandbox Code Playgroud)

user:password@语法似乎并没有工作,也有一些严重命名的环境变量左右浮动堆栈溢出和各种论坛帖子.

另请注意,您的宝石可能需要一段时间才能开始下载.起初我以为它不起作用,但有点耐心,他们开始按预期下载.


小智 8

我尝试了所有上述解决方案,但是没有一个能够工作.如果您使用的是linux/macOS,我强烈建议在ssh隧道上使用tsocks.为了使这个设置正常工作,您需要的是一台可以通过ssh登录的机器,此外还有一个名为tsocks的程序.

这里的想法是通过SSH(socks5代理)创建动态隧道.然后我们配置tsocks以使用此隧道并启动我们的应用程序,在这种情况下:

tsocks gem install ...
Run Code Online (Sandbox Code Playgroud)

或者考虑到rails 3.0:

tsocks bundle install
Run Code Online (Sandbox Code Playgroud)

更详细的指南可以在以下位置找到:

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

尽管是为Ubuntu编写的,但该程序应该适用于所有基于Unix的机器.Windows的tsocks的另一种选择是FreeCap(http://www.freecap.ru/eng/).Windows上可行的SSH客户端称为putty.


Sha*_*onu 8

快速回答:为安装/更新添加带有参数的代理配置

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

gem update --http-proxy http://host:port/ package_name
Run Code Online (Sandbox Code Playgroud)

  • 在使用现有答案为旧问题添加答案时,解释您的答案添加的新内容很有用。 (5认同)

小智 7

关于这个主题的帖子比比皆是,并且为了帮助其他人节省数小时尝试不同的解决方案,这是我修补时间的最终结果.

目前互联网上的三个解决方案是:rubysspi apserver cntlm

rubysspi仅适用于Windows机器AFAIK,因为它依赖于Win32Api库.因此,如果您在试图通过代理运行的Windows机器上,这就是您的解决方案.如果您使用的是Linux发行版,那么运气不佳.

apserver似乎是一个死的项目.我见过的帖子中列出的链接导致sourceforge上的404页面.我在sourceforge上搜索"apserver"什么都没有返回.

我见过的cntlm的sourceforge链接重定向到http://cntlm.awk.cz/,但是超时了.搜索sourceforge会打开这个链接,这确实有效:http://sourceforge.net/projects/cntlm/

下载并配置cntlm后,我已经设法通过代理安装gem,所以这似乎是Linux发行版的最佳解决方案.


Jar*_*dom 5

解决方法是在本地计算机上安装http://apserver.sourceforge.net,配置它并通过此代理运行gem.

  • 安装:只需下载apserver 097(而不是实验性的098!)并解压缩.
  • 配置:编辑server.cfg文件并将MS代理的值放入PARENT_PROXYPARENT_PROXY_PORT.输入DOMAIN和USER的值.将PASSWORD留空(冒号后没有任何内容) - 启动时会提示您.
  • 运行apserver: cd aps097; python main.py
  • 运行宝石: gem install—http-proxy http://localhost:5865/ library

  • 在谷歌群组中读取'apserver'现在是'NTLM授权服务器'; 羞于搜索前者不会重定向到后者. (5认同)