我后面的防火墙正在仅 NTLM 模式下运行 Microsoft ISA 服务器。是否有人成功通过 Ruby SSPI gem 或其他方法安装/更新了 Ruby gem?

...或者我只是懒惰?

笔记:rubysspi-1.2.4 不起作用。

这也适用于“igem”,IronRuby 项目的一部分

有帮助吗?

解决方案

我无法从命令行开关让我的工作,但我已经能够通过设置我的 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. 从 www.fiddler2.com 安装/运行 Fiddler
  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 盒子连接到 ISA 代理。

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

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

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

使用 -p 传递代理的参数。我使用的是 Gem 版本 1.9.1。

这完美解决了我的问题:

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

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

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

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

http_proxy: http://proxy:3128

然后你可以 gem install 照常。

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

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

user:password@ 语法似乎不起作用,而且 Stack Overflow 和各种论坛帖子上还存在一些命名错误的环境变量。

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

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

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

tsocks gem install ...

或考虑 Rails 3.0:

tsocks bundle install

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

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。

关于这个主题的帖子比比皆是,为了帮助其他人节省尝试不同解决方案的时间,以下是我经过数小时修改后的最终结果。

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

rubysspi 只能在 Windows 机器上运行,据我所知,因为它依赖于 Win32Api 库。因此,如果您在 Windows 机器上尝试通过代理运行,那么这就是适合您的解决方案。如果您使用的是 Linux 发行版,那么您就不走运了。

apserver 似乎是一个死项目。我见过的帖子中列出的链接指向 sourceforge 上的 404 页面。我在 sourceforge 上搜索“apserver”没有返回任何结果。

我看到的 cntlm 的 sourceforge 链接重定向到 http://cntlm.awk.cz/, ,但是超时了。在 sourceforge 上搜索会发现这个链接,它确实有效: http://sourceforge.net/projects/cntlm/

下载并配置 cntlm 后,我成功地通过代理安装了 gem,因此这似乎是 Linux 发行版的最佳解决方案。

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

  • 安装:只需下载 apserver 097(而不是实验性的 098!)并解压。
  • 配置:编辑 server.cfg 文件并将 MS 代理的值放入 PARENT_PROXYPARENT_PROXY_PORT. 。输入“域”和“用户”的值。将 PASSWORD 留空(冒号后不输入任何内容)——启动时系统会提示您。
  • 运行 apserver: cd aps097; python main.py
  • 运行宝石: 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/

如果你想使用 SOCKS5 代理,你可以尝试 ruby​​gems-socksproxy https://github.com/gussan/rubygems-socksproxy.

它适用于我的 OSX 10.9.3。

如果在代理后面,您可以导航到 红宝石下载, ,单击“下载”,这会将指定的更新(或 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 gem 执行此操作,例如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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top