厳しいプロキシを介してGitHubを使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1040089

  •  22-07-2019
  •  | 
  •  

質問

次の制約がある場合、WindowsおよびUnixからGitHubを使用するにはどうすればよいですか

  • インターネットへのすべてのアクセスはプロキシに制限されています
  • プロキシは、ポート80および443での接続のみを許可します
  • CONNECTメソッドは443でのみ有効です
  • プロキシ認証が必要です(NTLMまたはBasic)
役に立ちましたか?

解決

“ Using Github Draconian Proxies(Windows And Unix)” by Jeff Tchang(以前は別の場所)、WindowsおよびUnixプラットフォームの両方の手順が含まれます。以下に要約します。

Unix

  1. Gitをダウンロードします。
  2. コークスクリューをダウンロードしてインストールします。
  3. ファイル〜/ .ssh / config を編集または作成し、以下を追加します:

    ProxyCommand /usr/bin/corkscrew proxy.example.com 443 %h %p ~/.ssh/myauth
    
    Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile "/media/truecrypt1/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
    Host ssh.github.com
    User git
    Port 443
    Hostname ssh.github.com
    IdentityFile "/media/truecrypt1/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
  4. すべてが正しくセットアップされていれば、 ssh github.com を実行して表示することができるはずです

      

    こんにちは!認証に成功しましたが、GitHubはシェルアクセスを提供しません。
      github.comへの接続が閉じられました。

    これが機能しない場合は、 ssh ssh.github.com を実行して、まったく同じものを取得できます。最初のコマンドが機能しなかった場合、ポート22でCONNECTをブロックするプロキシを使用していることを意味します。SSLに必要なため、ポート443でCONNECTをブロックするプロキシはほとんどありません。

Windows

  1. msysgit をダウンロードします。いくつかの設定:
    • “ WindowsコマンドプロンプトからGitを実行”
    • “ OpenSSHを使用” (これは非常に重要です)
    • 行末を選択
  2. ダウンロード connect.c 。このツールは、その完全なシンプルさを主な理由として、独自の投稿に値します。これは、オープンソースツールのコルク抜きを反映し、プロキシをトンネリングするために使用されます。はい、ツールの名前は実際に“ connect.c。”と呼ばれていますWindowsユーザーの場合、事前にコンパイルされたバイナリが利用可能です。 connect.exe C:\ Windows \ connect.exe に配置します。
  3. Windowsの cmd.exe を使用して作業を行うか、Cygwinスタイルのシェルを使用するかを決定します。またはその両方。
  4. Cygwin Git bashシェルをセットアップします。

    Cygwinスタイルのシェルの場合、Gitアイコンを起動し、ファイル〜/ .ssh / config を編集して、ファイルに拡張子がないことを確認します。そのファイルに以下を入力し、パスがどのように指定されているかに注意してください。

    ProxyCommand /c/windows/connect.exe -H username@proxy.example.com:443 %h %p
    
    Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile "/c/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
    Host ssh.github.com
    User git
    Port 443
    Hostname ssh.github.com
    IdentityFile "/c/Keys/GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
  5. Windowsの cmd.exe シェルをセットアップします。

    Git Bashシェルが気に入らないとします。 cmd.exeインタープリターを好む。

    • C:\ Documents and Settings \ .ssh \ config の構成ファイルに移動します
    • そのコピーを作成するか、新しいコピーを作成します。私は config-windows
    • を呼び出しました

    ファイルに以下を追加します。パスの区切り文字とスタイルに注意を払います。

    ProxyCommand C:/Windows/connect.exe -H username@proxy.example.com:443 %h %p
    
    Host github.com
    User git
    Port 22
    Hostname github.com
    IdentityFile "C:\Keys\GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    
    Host ssh.github.com
    User git
    Port 443
    Hostname ssh.github.com
    IdentityFile "C:\Keys\GitHubKey.private"
    TCPKeepAlive yes
    IdentitiesOnly yes
    

詳細については、ブログ全体をご覧ください。投稿

他のヒント

[上記の最初の回答への追加が4日以内に承認されなかったので、ここに入力します。]

corkscrew connect 、および標準のUnixコマンド nc は、基本認証(パスワードを安全に送信しない)のみをサポートすることに注意してください。
tunnel-auth バージョン0.04 に加えて、ダイジェスト認証をサポート。

プロキシでNTLM認証が必要な場合、これらのコマンドはすべて cntlm と非常にうまく組み合わせることができます。 次のとおりです。

cntlm がリッスンするローカルポート(以下の例のように8080など)を選択 (プロキシを使用してユーザー認証を実行し、 プロキシへの/からの追加パッケージ)、ポートなどを設定します(例: /etc/cntlm.conf )、および上記のProxyCommandの代わりに使用します(それぞれのポート番号を挿入):

  

ProxyCommand corkscrew 127.0.0.1 8080%h%p

または

  

ProxyCommand connect -H 127.0.0.1:8080%h%p

または

  

ProxyCommand nc -X connect -x 127.0.0.1:8080%h%p

または

  

ProxyCommand tunnel-auth -p 127.0.0.1:8080 -r%h:%p

私のシナリオはJeff Tchangのシナリオとは少し異なりました(ただし彼の投稿に基づいています)が、ここで役立つかもしれません。

職場/企業のインターネットアクセスはすべて、認証されていないプロキシ経由です。 からのクローンを作成できましたが、プッシュしませんでしたgithub:running

git push -u origin master

戻る

ssh: connect to host github.com port 22: Operation timed out
fatal: The remote end hung up unexpectedly

http://returnbooleantrue.blogspotに基づきます。 com / 2009/06 / using-github-through-draconian-proxies.html および http://meinit.nl/ssh-through-a-proxy-from-your-apple-mac-os-x および http://www.mtu.net/~engstrom/ssh-proxy.php をダウンロードできました/ corkscrewをインストールして、以下を〜/ .ssh / configに追加します。

Host github.com
  User git
  Port 22
  Hostname github.com
  TCPKeepAlive yes
  IdentitiesOnly yes
  ProxyCommand /usr/local/bin/corkscrew proxy.<my-workplace>.com 8080 %h %p 

注意点:

  • GitHubでも職場/企業秘密キーを使用しています。そうでない場合は、「IdentityFile」を追加する必要があります。行

  • Jeff Tchangとは異なり(mtu.netに感謝)、「〜/ .ssh / myauth」を取得する必要はありませんでした。 ProxyCommand行の最後に

  • ssh.github.comホストセクションを設定する必要はありませんでした。

これらのヘルプを期待してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top