github - clone や push で、ssh の Connection timed out が発生する

proxy 環境で [ssh: connect to host github.com port 22: Connection timed out] が発生する原因と解決方法です。

エラー発生例

ssh: connect to host github.com port 22: Connection timed out
/d/github
$git clone git@github.com:curict/test.git .
Cloning into '.'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

原因

Proxy環境下では ポート番号22 が使えないことがあります。そのために github のサーバーに接続できず、エラーとなります。

解決方法

github の ssh 接続は ポート443番での接続も許可しているため、設定でポート22番から443番に変更します。

設定手順

  1. エクスプローラーで次の場所に移動します。
    C:\Users\ログインユーザー名\.ssh
    
    エクスプローラー
  2. [config]という名前のファイルを作成します。拡張子は不要です。
  3. テキストエディタで作成した [config] ファイルを開き、次の内容を入力して保存します。
    Host github.com
        User git
        Hostname ssh.github.com
        IdentityFile ~/.ssh/id_rsa
        Port 443
        ProxyCommand connect.exe -H プロキシーサーバー名:ポート番号 %h %p
    
    • 6 行目の プロキシーサーバー名とポート番号は、環境に合わせて修正します。サーバー名に[http://]は不要です。
    • 4 行目は秘密鍵ファイルの指定です。ファイル名や場所を変更している場合は修正します。[~/]は、[C:\Users\ログインユーザー名\]と同じ意味です。
  4. github.com への ssh 接続時に 443ポートが使用されるようになります。

接続テスト

SSH で 接続したことのないホストに接続すると、接続してよいかの確認が行われます。キーボードで[yes]と入力し、[Enter]キーを押します。ここまでくれば、接続に成功しています。
The authenticity of host '[ssh.github.com]:443 (<no hostip for proxy command>)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
gitbash

検証環境

関連ページ