代码之家  ›  专栏  ›  技术社区  ›  Brett Veenstra

如何从代理背后更新ruby gems(isa-ntlm)

  •  217
  • Brett Veenstra  · 技术社区  · 18 年前

    我所支持的防火墙正在以仅NTLM模式运行Microsoft ISA Server。hash有人成功地通过ruby sspi gem或其他方法安装/更新了他们的ruby gems吗?

    …或者我只是懒惰?

    注:rubysspi-1.2.4不起作用。

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

    18 回复  |  直到 10 年前
        1
  •  208
  •   the Tin Man    10 年前

    我无法通过命令行开关来完成我的工作,但我可以通过设置我的 HTTP_PROXY 环境变量。(注意,情况似乎很重要)。我有一个批处理文件,其中有这样一行:

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

    我设置了四个参考变量,然后才明显地到达这一行。例如,如果我的用户名是“wolfbyte”,我的密码是“secret”,我的代理名是“pigsy”,在端口8080上运行:

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

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

        2
  •  204
  •   the Tin Man    10 年前

    对于Windows操作系统,我用小提琴来解决这个问题。

    1. 从www.fiddler2.com安装/运行fiddler
    2. 运行宝石:

      $ gem install --http-proxy http://localhost:8888 $gem_name
      
        3
  •  125
  •   the Tin Man    10 年前

    这完全有效:

    gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
    
        4
  •  48
  •   Jason Navarrete    18 年前

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

    很好,还允许我将Ubuntu设备连接到ISA代理。

    退房 http://cntlm.wiki.sourceforge.net/ 更多信息

        5
  •  38
  •   the Tin Man    10 年前

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

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

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

        6
  •  16
  •   HomTom    12 年前

    这完全解决了我的问题:

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

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

    gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
    
        7
  •  15
  •   riemann    10 年前

    创建一个.gemrc文件(在/etc/gemrc或~/.gemrc中,或在chef gem in/opt/chef/embedded/etc/gemrc中),其中包含:

    http_proxy: http://proxy:3128
    

    然后你可以 gem install 像往常一样。

        8
  •  10
  •   the Tin Man    10 年前

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

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

    这个 user:password@ 语法似乎不起作用,在堆栈溢出和各种论坛帖子上还有一些名字不好的环境变量。

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

        9
  •  8
  •   Christian F    15 年前

    我尝试了以上所有的解决方案,但是没有一个有效。如果您使用的是Linux/MacOS,我强烈建议您通过ssh通道使用tsock。要使这个设置工作,您需要的是一台可以通过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。

        10
  •  7
  •   Aaron Craig    17 年前

    关于这个主题的文章比比皆是,为了帮助其他人节省尝试不同解决方案的时间,这里是我修修补补时间的最终结果。

    目前互联网上的三种解决方案是: 鲁比斯皮 AppServer 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发行版的最佳解决方案。

        11
  •  5
  •   the Tin Man    10 年前

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

    • 安装:只需下载apserver 097(而不是实验版098!)打开包装。
    • 配置:编辑server.cfg文件并将MS代理的值放入 PARENT_PROXY 和 PARENT_PROXY_PORT . 输入域和用户的值。将密码留空(冒号后无任何内容),启动密码时会提示您。
    • 运行AppServer: cd aps097; python main.py
    • 运行宝石: gem install—http-proxy http://localhost:5865/ library
        12
  •  4
  •   the Tin Man    10 年前

    我正在代理服务器后面工作,刚通过直接从 http://rubygems.org .

    然后我跑了 sudo gem install [path/to/downloaded/gem/file] . 我不能说这对所有的宝石都有效,但它可能会帮助一些人。

        13
  •  3
  •   the Tin Man    10 年前

    这对我来说是在一个窗口的盒子里工作的:

    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代理身份验证错误。

        14
  •  2
  •   moonpatrol    14 年前

    Rubysspi-1.3.1在Windows7上为我工作,使用本页的说明:

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

        15
  •  2
  •   the Tin Man    10 年前

    如果您使用的是*nix系统,请使用:

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

    然后尝试:

    gem install ${gem_name}
    
        16
  •  1
  •   Qi Luo    12 年前

    如果要使用socks5代理,可以尝试rubygems socksproxy https://github.com/gussan/rubygems-socksproxy .

    它在OSX 10.9.3上为我工作。

        17
  •  1
  •   ArNumb    12 年前

    如果在代理之后,可以导航到 Ruby downloads ,单击下载,将指定的更新(或gem)下载到所需位置。

    接下来,通过ruby命令行,通过以下方式导航到下载的位置: pushd [directory]

    如: pushd D:\Setups

    然后运行以下命令: gem install [update name] --local

    如: gem install rubygems-update --local .

    在Windows7上测试了Ruby更新版本2.4.1。

    要检查,请使用以下命令: ruby -v

        18
  •  1
  •   the Tin Man    10 年前

    与其编辑批处理文件(对于其他Ruby Gems,例如Bundler,您可能需要这样做),不如只做一次,然后正确地进行。

    在Windows上,在我的公司代理之后,我所要做的就是添加 HTTP_PROXY 我的系统的环境变量。

    1. 开始->右键单击计算机->属性
    2. 选择“高级系统设置”
    3. 单击高级->环境变量
    4. 创建名为“的新系统变量 HTTP代理 “,并将该值设置为代理服务器
    5. 重新启动或注销,然后重新登录

    根据您的身份验证要求, HTTP代理 值可以简单到:

    http://proxy-server-name
    

    或者像其他人指出的那样更复杂

    http://username:password@proxy-server-name:port-number
    
    推荐文章