次の制約がある場合、WindowsおよびUnixからGitHubを使用するにはどうすればよいですか?
- インターネットへのすべてのアクセスはプロキシに制限されています
- プロキシは、ポート80および443での接続のみを許可します
- CONNECTメソッドは443に対してのみ有効です
- プロキシ認証が必要です(NTLMまたは基本)
以下に要約されている、WindowsとUnixの両方のプラットフォームの手順を含む、 Jeff Tchang(以前は別の場所から入手可能)による「Draconianプロキシ(WindowsおよびUnix)を介したGithubの使用」</a>を参照してください。
ファイルを編集または作成し~/.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
ssh github.com
すべてが正しくセットアップされている場合は、実行して見ることができるはずです
こんにちはユーザー!認証に成功しましたが、GitHubはシェルアクセスを提供していません。
github.comへの接続が閉じられました。
これが機能しない場合は、実行ssh ssh.github.com
してまったく同じものを取得できます。最初のコマンドが機能しなかった場合は、ポート22でCONNECTをブロックするプロキシを使用していることを意味します。SSLに必要なため、ポート443でCONNECTをブロックするプロキシはほとんどありません。
connect.exe
ましたC:\Windows\connect.exe
。cmd.exe
Windowsを使用して作業を行うか、Cygwinスタイルのシェルを使用するかを決定します。または両方。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
cmd.exe
Windowsシェルをセットアップします。
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
詳細については、ブログ投稿全体を参照してください。
[上記の最初の回答への追加が 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
私のシナリオは 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コルクスクリューをダウンロード/インストールして、~/.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 セクションをセットアップする必要はありませんでした。
これらが役立つことを願っています。