我背后的防火墙正在仅NTLM模式下运行Microsoft ISA服务器。哈希是否成功通过Ruby SSPI gem或其他方法来安装/更新其Ruby宝石?
...还是我只是懒惰?
注意:rubysspi-1.2.4不起作用。
这也适用于Ironig项目的“ igem”
sudo
通过添加-E
开关来确保可以访问您的环境变量,例如sudo -E doSomething
我背后的防火墙正在仅NTLM模式下运行Microsoft ISA服务器。哈希是否成功通过Ruby SSPI gem或其他方法来安装/更新其Ruby宝石?
...还是我只是懒惰?
注意:rubysspi-1.2.4不起作用。
这也适用于Ironig项目的“ igem”
sudo
通过添加-E
开关来确保可以访问您的环境变量,例如sudo -E doSomething
Answers:
我无法通过命令行开关使我的工作正常,但仅通过设置HTTP_PROXY
环境变量就可以实现。(请注意,情况似乎很重要)。我有一个批处理文件,其中有这样的一行:
SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
在到达这一行之前,我先设置了四个引用变量。例如,如果我的用户名是“ wolfbyte”,我的密码是“ secret”,我的代理称为“ pigsy”,并且在端口8080上运行:
SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
您可能要小心管理该密码,因为它在机器会话中将密码以纯文本格式存储,但是我认为这不是太大的问题。
@
用%40
etc 取代
对于Windows操作系统,我使用Fiddler解决了该问题。
运行宝石:
$ gem install --http-proxy http://localhost:8888 $gem_name
gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
是所有需要我。
sudo gem install jekyll --http-proxy=http://web-proxy.company.com:8080
这完全有效:
gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
SSL_connect SYSCALL returned=5 errno=0 state=unknown state (https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/jekyll-3.0.0.gemspec.rz)
。这对我gem install --http-proxy http://127.0.0.1:8580 jekyll
alias geminstall='gem install --http-proxy ${http_proxy}'
使我的生活更轻松。
我一直在使用cntlm(http://cntlm.sourceforge.net/)。配置与ntlmaps非常相似。
效果很好,并且还允许我将Ubuntu盒子连接到ISA代理。
创建一个.gemrc文件(在/ etc / gemrc或〜/ .gemrc中,或者例如在/ opt / chef / embedded / etc / gemrc中使用Chef gem),该文件包含:
http_proxy: http://proxy:3128
然后您可以gem install
像往常一样。
--http-proxy
是.gemrc
文件而不是文件,则可能来自sudo
配置。我不得不检查/etc/sudoers
要添加的文件:Defaults env_keep = "http_proxy ftp_proxy"
之前:Defaults env_reset
如果您在通过代理进行身份验证时遇到问题,请确保按照以下格式正确设置环境变量:
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代理)创建动态隧道。然后,在这种情况下,我们将tsock配置为使用此隧道并启动我们的应用程序:
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客户端称为腻子。
关于该主题的文章比比皆是,为了帮助他人节省尝试不同解决方案的时间,这是我努力工作的最终结果。
目前,围绕Internet的三个解决方案是: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发行版的最佳解决方案。
解决方法是在本地计算机上安装http://web.archive.org/web/20060913093359/http://apserver.sourceforge.net:80/,对其进行配置并通过此代理运行gem。
PARENT_PROXY
和中PARENT_PROXY_PORT
。输入DOMAIN和USER的值。将PASSWORD(密码)留空(冒号之后)–启动密码时,系统会提示您。cd aps097; python main.py
gem install—http-proxy http://localhost:5865/ library
我正在代理下面,只是通过直接从http://rubygems.org下载来安装SASS 。
然后我跑了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代理身份验证错误。
如果要使用SOCKS5代理,可以尝试rubygems-socksproxy https://github.com/gussan/rubygems-socksproxy。
它适用于OSX 10.9.3。
如果位于代理之后,则可以导航至Ruby downloads,单击Download,这会将指定的更新(或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
环境变量添加到系统中。
HTTP_PROXY
” 的新系统变量,并将“值”设置为您的代理服务器根据您的身份验证要求,HTTP_PROXY
值可以很简单:
http://proxy-server-name
或更复杂的其他人指出的
http://username:password@proxy-server-name:port-number
适用于使用SSH隧道传输的任何人;您可以创建gem
使用SOCKS代理的命令版本:
socksify
与安装gem install socksify
(至少需要在没有代理的情况下执行此步骤)复制您现有的gem exe
cp $(command which gem) /usr/local/bin/proxy_gem
在您喜欢的编辑器中将其打开,并将其添加到顶部(在shebang之后)
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
设置你的隧道
ssh -D 8123 -f -C -q -N user@proxy
使用proxy_gem运行gem命令
SOCKS_PROXY=localhost:8123 proxy_gem push mygem
alias gem='ruby -rspa `which gem`'