ゆふてっく。

ソフトウェアテスト界隈の話を書きます多分。

Windows10で 認証プロキシ環境下で GitHubに 443番ポートで SSH接続する方法

客先のネットワークポリシーが厳しくなって、認証プロキシを通さないとインターネット接続できなくなりました。
その環境下でGitHubSSH接続する方法が分からなくて調べたので、忘れないようにメモっておきます。

(なんでSSH接続したいかというと、HTTPS接続で試したけどGitHubの認証がうまくいかなかったせいです。
「ユーザ名とパスワードを2回ずつ訊かれて、正しいの入れてるのに認証失敗する」って感じでした。理由は調べてないので分かりません)

環境

  • Windows 10
  • Git for Windows 2.21.0
    • 操作は同梱の GitBush でやる
  • プロキシサーバの制約
    • Basic認証あり
    • 80/443以外のポートへのアクセスを許可しない

前提知識

GitHubSSHは443番ポートも使えるらしいです
(https://help.github.com/en/articles/using-ssh-over-the-https-port)

やったこと

.ssh/configの設定

.ssh/config をこんな感じにします。

Host github.com
    User git
    Hostname ssh.github.com
    Port 443
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand connect.exe -H {PROXY_ADDRESS}:{PROXY_PORT} %h %p

ProxyCommand に設定してる connect.exe は、 C:\Program Files\Git\mingw64\bin にありました。
Git for Windows インストールすると勝手に入るみたいです。

環境変数の設定

ユーザ環境変数に以下を設定します。

変数名
HTTP_PROXY_USER {プロキシのユーザID}
HTTP_PROXY_PASSWORD {プロキシのパスワード}

動作確認

以下コマンドで、GitHubに接続してみます。

$ ssh -T github.com

こんな感じのメッセージが返ってきたら成功です

Hi {GITHUB_USER_NAME}! You've successfully authenticated, but GitHub does not provide shell access.

おまけ (検索にヒットさせる用)

環境変数にID/PWを設定しないでGitHubSSH接続を試みた場合、こういうエラーが出ました。
(なんで文字化けしてんのかは分かりません。。なんか日本語名のパスなんだろうけど。。)

$ ssh -T github.com
'C:\Program' ▒́A▒▒▒▒▒R▒}▒▒▒h▒܂▒▒͊O▒▒▒R▒}▒▒▒h▒A
▒▒▒▒\▒ȃv▒▒▒O▒▒▒▒▒܂▒▒̓o▒b▒` ▒t▒@▒C▒▒▒Ƃ▒▒ĔF▒▒▒▒▒▒Ă▒▒܂▒▒▒B
FATAL: Cannot decide password for proxy authentication.ssh_exchange_identification: Connection closed by remote host