23

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

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

3 に答える 3

22

以下に要約されている、WindowsとUnixの両方のプラットフォームの手順を含む、 Jeff Tchang(以前は別の場所から入手可能)による「Draconianプロキシ(WindowsおよびUnix)を介したGithubの使用」</a>を参照してください。

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をブロックするプロキシはほとんどありません。

ウィンドウズ

  1. msysgitをダウンロードします。いくつかの設定:
    • 「WindowsコマンドプロンプトからGitを実行する」</li>
    • 「OpenSSHを使用する」(これは非常に重要です)
    • 行末を選択してください
  2. connect.cをダウンロードします。このツールは、主にその完全な単純さのために、独自の投稿に値します。オープンソースツールのコルク栓抜きを反映しており、プロキシをトンネリングするために使用されます。はい、ツールの名前は実際には「connect.c」と呼ばれています。Windowsユーザーの場合、コンパイル済みのバイナリを利用できます。私は自分を入れconnect.exeましたC:\Windows\connect.exe
  3. cmd.exeWindowsを使用して作業を行うか、Cygwinスタイルのシェルを使用するかを決定します。または両方。
  4. CygwinGitbashシェルをセットアップします。

    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. cmd.exeWindowsシェルをセットアップします。

    GitBashシェルが気に入らないとします。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
    

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

于 2009-06-24T18:29:41.113 に答える
4

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

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

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

リッスンするローカル ポート (例: 以下の例では 8080) を選択しcntlm(プロキシを使用してユーザー認証を実行し、プロキシとの間でその他のパッケージを転送します)、ポートなどを設定します (例: で /etc/cntlm.conf)。上記の ProxyCommand の代わりに使用します (それぞれのポート番号が挿入されています)。

ProxyCommand コルク抜き 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 トンネル認証 -p 127.0.0.1:8080 -r %h:%p

于 2013-03-11T16:09:58.213 に答える
2

私のシナリオは 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-xhttp://www.mtu.net/~engstrom/ssh-proxy.phpコルクスクリューをダウンロード/インストールして、~/.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 のおかげで)、ProxyCommand 行の最後に「~/.ssh/myauth」を付ける必要はありませんでした。

  • ssh.github.com Host セクションをセットアップする必要はありませんでした。

これらが役立つことを願っています。

于 2011-12-08T11:32:06.853 に答える