首页 / 知识

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

2023-04-11 19:24:00

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

How do I update Ruby Gems from behind a Proxy (ISA-NTLM)

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

...还是我只是懒惰?

注意:rubysspi-1.2.4不起作用。

这也适用于Ironig项目的" igem"


对于Windows操作系统,我使用了Fiddler来解决此问题。

  • 从www.fiddler2.com安装/运行Fiddler
  • 运行宝石:

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

  • 我无法通过命令行开关使我的工作正常,但仅通过设置我的HTTP_PROXY环境变量就可以做到。 (请注意,情况似乎很重要)。我有一个批处理文件,其中包含以下内容:

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

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

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

    您可能需要小心管理,因为它在机器会话中将密码以纯文本格式存储,但是我认为这不是太大的问题。


    这完全有效:

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

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

    • gem install --http-proxy http:// localhost:3128 _name_of_gem_

    效果很好,并且还允许我将Ubuntu盒子连接到ISA代理。

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


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

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

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


    这完全解决我的问题:

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

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

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


    创建一个文件.gemrc(无论是在/ etc / gemrc或?/ .gemrc或例如与厨师宝石在/ opt /厨师/嵌入的/ etc / gemrc)含有:

    1
    http_proxy: http://proxy:3128

    然后您可以照常gem install


    如果您有通过代理得到验证的问题,一定要设置环境变量在下面完全格式:

    1
    2
    3
    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配置为使用此隧道并启动我们的应用程序:

    1
    tsocks gem install ...

    或考虑使用Rails 3.0:

    1
    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客户端称为腻子。


    关于该主题的文章不胜枚举,为了帮助其他人节省尝试不同解决方案的时间,这是我努力工作的最终结果。

    目前,互联网上的三种解决方案是:
    红宝石
    审批者
    中央电视台

    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://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


    我在代理后面工作,并通过直接从http://rubygems.org下载直接安装了SASS。

    然后,我运行了sudo gem install [path/to/downloaded/gem/file]。我不能说这对所有宝石都适用,但可能对某些人有帮助。


    如果您使用的是* nix系统,请使用以下命令:

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

    然后尝试:

    1
    gem install ${gem_name}

    这在Windows框中对我有用:

    1
    2
    3
    4
    5
    6
    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代理身份验证错误。


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

    1
    2
    3
    gem install --http-proxy http://host:port/ package_name

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

    rubysspi-1.3.1在Windows 7上为我工作,使用此页面上的说明:

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


    而不是编辑批处理文件(对于其他Ruby gem,例如Bundler,您可能必须执行此操作),最好一次执行一次并正确执行。

    在Windows中,我的背后企业的代理,所有我必须做的是HTTP_PROXY环境变量添加到我的系统。

  • 开始->右键单击计算机->属性
  • 选择"高级系统设置"
  • 单击高级->环境变量
  • 创建一个名为" HTTP_PROXY"的新系统变量,并将"值"设置为您的代理服务器
  • 重新启动或注销并再次登录
  • 根据您的身份验证要求,HTTP_PROXY值可以很简单:

    1
    http://proxy-server-name

    或更复杂的其他人指出的

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

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

    它适用于OSX 10.9.3。


    如果位于代理之后,则可以导航至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


    代理运行防火墙服务器

    最新内容

    热门文章

    推荐文章

    标签云

    猜你喜欢