プロキシの背後からRuby Gemsを更新する方法(ISA-NTLM)


232

私が背後にいるファイアウォールは、NTLM専用モードでMicrosoft ISAサーバーを実行しています。ハッシュ誰かがRuby gemをRuby SSPI gemまたは他の方法でインストール/更新することに成功していますか?

...または私は怠惰ですか?

注:rubysspi-1.2.4は機能しません。

これは、IronRubyプロジェクトの一部である「igem」でも機能します。


rubysspiを動作させることができましたが、いじくり回す必要があります。:あなたがGitのBashのシェルから、それを使用したい場合は、このような、エイリアスはあなたの.bashrcファイルに追加必要がありますalias gem='ruby -rspa `which gem`'
アイコノクラスト

1
これらの回答のほとんどの手順を実行した後にプロキシの問題がある場合はsudo-Eスイッチを追加して、環境変数にアクセスできることを確認してください。たとえば、sudo -E doSomething
kayleeFrye_onDeck

回答:


214

コマンドラインスイッチから動作させることはできませんでしたが、HTTP_PROXY環境変数を設定するだけでそれを実行できました。(大文字と小文字が重要なようです)。次のような行があるバッチファイルがあります。

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

明らかにこの行に到達する前に、4つの参照変数を設定しました。たとえば、ユーザー名が「wolfbyte」、パスワードが「secret」、プロキシが「pigsy」と呼ばれ、ポート8080で動作している場合:

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

マシンのセッションではプレーンテキストでパスワードが保存されるため、その管理方法に注意する必要があるかもしれませんが、それほど問題になることはないと思います。


6
'gem'は、http_proxy env varまたは--http-proxy引数のどちらを使用しても、プロキシ文字列のバックスラッシュを認識できないようです。たとえば、Ubuntuボックスから--http-proxy http:// domain \\ userid @ server:portを実行すると、エラーが発生します。「無効な引数:--http-proxy ...」; 幸い、私のプロキシサーバーはドメイン指定を必要とせず、gemはそれなしで動作しました。
スポールソン2009

ISAを使用すると、管理者は認証するデフォルトのドメインを指定できます。ドメインを除外して、spoulsonが提案するようにユーザー名を使用することもできます。ISA管理者が上記のデフォルトドメインを指定し、ユーザーアカウントがそのドメインにある場合、これは機能します(ファイアウォールにブロックルールがない場合)
squillman

11
@spoulsonドメインが必要な場合は、円記号をURIエンコードする必要があります(例:http:// domain%5Cuserid @ server:port)。
Ian G

13
ちなみに、Windowsでは、gem.batにset http_proxy行を追加して、毎回プロキシを設定する必要がないようにすることができます。
エド・マネ

1
ちなみに、パスワードに特殊記号が含まれている場合は、URLエンコードする必要があります。たとえば@%40etcに置き換えます
Andrey Regentov

221

Windows OSの場合、Fiddlerを使用して問題を回避しました。

  1. Fiddlerをwww.fiddler2.comからインストール/実行します
  2. gemを実行します。

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

3
ntlmapsやcntlmよりもはるかに簡単に治療できました。
原子番号

36
これでうまくいきました。Fiddlerはすべての状況で必要なわけではないことに注意してください。gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name私に必要なのはそれだけです。
Polaris878 2011

Windows 7では、-http-proxyフラグはgem名の後に置く必要があります。たとえば、gem install <gemaname> --http-proxy yourproxy.address; portのようにします。それ以外の場合は、無効なコマンドラインスイッチについて文句を言います。
Alek Davis

Windows 10で動作
ggiunta

これは、企業プロキシの背後で私のために働いたものです。バイオリンは必要ありません。例では、ジキル宝石をインストールするためにだけ実行します sudo gem install jekyll --http-proxy=http://web-proxy.company.com:8080
ジョセフ・

129

これは完全に機能しました:

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

15
これは最新の回答であり、Windowsでも機能します。ただし、ユーザー名とパスワードを追加する必要がありました。geminstall --http-proxy http:// [ user ]:[ password ] @ [ server ]:[ port ]
vanderwyst

jekyllをインストールできず、取得し続けました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
Majid Fouladpour 2015年

私はbashプロファイルにエイリアスを追加しましたalias geminstall='gem install --http-proxy ${http_proxy}'
bgStack15 2016

48

私は仕事でcntlm(http://cntlm.sourceforge.net/)を使用しています。設定はntlmapsとよく似ています。

うまく機能し、UbuntuボックスをISAプロキシに接続することもできます。

詳細については、http://cntlm.wiki.sourceforge.net/を確認してください。


2
これは、試されたすべての中で最も苦痛のない方法です。Ubuntu / Debianでは、apt-get install cntlmを実行し、構成を編集して、http_proxy = " localhost:3128 "をエクスポートします。動作します!
Konrads、2012

Windowsでも完璧に動作します。ありがとう!
Subrat Pattnaik 2014年

38

私はこれらの解決策のいくつかを試しましたが、どれもうまくいきませんでした。私は最終的に私のために働く解決策を見つけました:

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

-pパラメータを使用してプロキシを渡します。Gemバージョン1.9.1を使用しています。



接続するためにproxy_ip使用するを追加するhttps必要がありました。Great:D(gemバージョン2.0.14)
madlymad

18

以下を含む.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
DependencyHell

16

これは私の問題を完全に解決しました:

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

ユーザー名とパスワードを追加する必要があるかもしれません:

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

11

プロキシを介した認証で問題が発生した場合は、環境変数を以下の形式で正確に設定してください。

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

user:password@構文は動作していないようとスタックオーバーフローや様々なフォーラムの投稿に漂っいくつかのひどいという名前の環境変数もあります。

また、gemsがダウンロードを開始するまでに時間がかかる場合があることに注意してください。最初はうまくいかないと思いましたが、少し忍耐して期待通りにダウンロードを始めました。


ベンジャミンウットンのヒントを取り入れることは、社内LANに接続された私のWindows 7ラップトップでうまくいきました。DOSプロンプトのコマンドラインウィンドウで、HTTP_PROXYをhttp:// localhost:8888(スペースは無視)に設定し、LANユーザー名とパスワードをそれぞれHTTP_PROXY_USERとHTTP_PROXY_PASSに使用しました。
raycarr 2013

8

上記の解決策をすべて試しましたが、どれもうまくいきませんでした。Linux / macOSを使用している場合は、sshトンネルを介してtsocksを使用することを強くお勧めします。このセットアップを機能させるために必要なのは、ssh経由でログインできるマシンであり、それに加えて、tsocksと呼ばれるプログラムがインストールされています。

ここでのアイデアは、SSH(socks5プロキシ)を介して動的トンネルを作成することです。次に、このトンネルを使用してアプリケーションを開始するようにtsocksを構成します。この場合は、次のようになります。

tsocks gem install ...

またはレール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クライアントはパテと呼ばれます。


バックアップで記事を見つけ、同じURLで再公開しました。
ByScripts、2014年

1
URLはまだ利用できません。オフサイトの非Stack Exchangeサイトへのリンクを提供する場合は、ここで重要な部分を要約し、そのサイトにクレジットを付与します。そうすれば、リンクが切れても、重要な部分はまだここにあります。
ティンマン

7

このトピックに関する投稿はたくさんあり、他の人がさまざまなソリューションを試す時間を節約できるように、私の時間をいじくり回した最終的な結果がここにあります。

現時点でのインターネットに関する3つのソリューションは次のとおりです。rubysspi apserver cntlm

rubysspiは、Win32Apiライブラリに依存しているため、WindowsマシンAFAIKからのみ機能します。したがって、プロキシを介して実行しようとしているWindowsボックスを使用している場合は、これがソリューションです。Linuxディストリビューションを使用している場合は、運が悪いです。

apserverは死んだプロジェクトのようです。私が見た投稿にリストされているリンクは、sourceforgeの404ページにつながります。sourceforgeで「apserver」を検索しても何も返されません。

私が見たcntlmのsourceforgeリンクはhttp://cntlm.awk.cz/にリダイレクトしますが、タイムアウトします。sourceforgeを検索すると、次のリンクが表示され、機能します。http//sourceforge.net/projects/cntlm/

cntlmをダウンロードして構成した後、プロキシを介してgemをインストールすることができたので、これはLinuxディストリビューションに最適なソリューションのようです。


6

クイックアンサー:インストールと更新の両方にパラメーターを使用してプロキシ設定を追加します

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

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

5
既存の回答を含む古い質問に回答を追加する場合、回答が新しく追加する内容を説明すると便利です。
Jason Aller

すべての詳細(クイックアンサー)を読んで詳細なしでコマンドを直接指定する
Shantonu

そして、環境変数を設定することは誰にとってもオプションではありません(更新を1回だけ行う場合)
Shantonu

コメントセクションではなく、回答自体にすべての説明を追加してください
Nico Haase

5

回避策は、ローカルマシンにhttp://web.archive.org/web/20060913093359/http://apserver.sourceforge.net:80/をインストールし、それを設定して、このプロキシを介して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

5
「apserver」が「NTLM Authorization Server」になったことをグーグルグループで読んでください。前者を検索してもその後者にリダイレクトされないのは残念です。
ダレンビショップ

こんにちはJarinさん、コメントで指定したリンクにアクセスしましたが、そのダウンロードが見つかりませんでした。他の場所からダウンロードする方法はありますか?
Matrich

1
Darrenのコメントによる@Matrich。apserverの名前が変更され、ここに見つかりました:ntlmaps.sourceforge.net
atomicules

4

私はプロキシの背後で作業していて、http://rubygems.orgから直接ダウンロードしてSASSをインストールしました。

その後、走ったsudo gem install [path/to/downloaded/gem/file]。これはすべての宝石で機能するとは言えませんが、一部の人には役立つかもしれません。


3

これは私にとって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プロキシ認証エラーが発生しました。


3

* nixシステムを使用している場合は、これを使用します。

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

次に試してください:

gem install ${gem_name}



1

プロキシの背後にある場合は、Rubyのダウンロードに移動できますに、[ダウンロード]をクリックして、指定した更新(またはGem)を目的の場所にダウンロードします。

次に、Rubyコマンドラインで、次を使用してダウンロードした場所に移動します。 pushd [directory]

例: pushd D:\Setups

次に、次のコマンドを実行します。 gem install [update name] --local

例:gem install rubygems-update --local

Ruby更新バージョン2.4.1がインストールされたWindows 7でテストされています。

確認するには、次のコマンドを使用します。 ruby -v


1

バッチファイルを編集する(Bundlerなどの他のRuby gemで行う必要がある)代わりに、一度これを実行して、適切に実行することをお勧めします。

Windowsでは、企業プロキシの背後でHTTP_PROXY、システムに環境変数を追加するだけで済みました。

  1. スタート->コンピューターを右クリック->プロパティ
  2. 「システムの詳細設定」を選択します
  3. [詳細]-> [環境変数]をクリックします
  4. 「」という名前の新しいシステム変数を作成しますHTTP_PROXY "、値をプロキシサーバーに設定します
  5. 再起動するか、ログアウトして再度ログインする

認証要件に応じて、HTTP_PROXY値は次のように単純になる場合があります。

http://proxy-server-name

または他の人が指摘したようにもっと複雑

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

0

SSHでトンネリングする人のために; gemSOCKSプロキシを使用するコマンドのバージョンを作成できます。

  1. インストールsocksifyしてgem install socksify(あなたは少なくとも、プロキシせずにこの手順を実行できるようにする必要があります)
  2. 既存のgem exeをコピーする

    cp $(command which gem) /usr/local/bin/proxy_gem
  3. それをお気に入りのエディターで開き、これを上部(シバンの後)に追加します

    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
  4. トンネルを設定する

    ssh -D 8123 -f -C -q -N user@proxy
  5. proxy_gemでgemコマンドを実行します

    SOCKS_PROXY=localhost:8123 proxy_gem push mygem
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.