社内ネットワークからGitHubへ接続したときに、ssh: connect to host github.com port 22: Connection timed outと表示される場合は、ファイアウォールなどでSSHの標準ポートである22番が遮断されている可能性があります。
GitHub.comでは、組織のネットワーク管理者が許可していることを前提に、ssh.github.comの443番ポートを使ってSSH接続できます。まず設定を変更せずに接続をテストし、表示されたホスト鍵をGitHub公式情報と照合してから、SSH設定を切り替えるのが安全です。([GitHub Docs][1])
ただし、443番ポートを使っても通信内容がHTTPSになるわけではありません。通信プロトコルはSSHのままなので、Webプロキシやセキュリティ製品の設定によっては接続できないことがあります。ネットワーク制限を無断で回避せず、必ず管理者が許可する経路を利用してください。([GitHub Docs][1])
GitHubのSSH接続が22番ポートで遮断されるときの443番接続
GitHub.comへの通常のSSH接続では、次のように22番ポートが使われます。
ssh -T [email protected]
社内ネットワークなどで22番ポートが遮断されている場合は、GitHubが用意している次の接続先を利用できます。
ssh -T -p 443 [email protected]
重要なのは、443番ポートの接続先がgithub.comではなく、ssh.github.comであることです。次の指定ではありません。
ssh -T -p 443 [email protected]
GitHub公式ドキュメントでも、443番ポートではssh.github.comを使用するよう案内されています。([GitHub Docs][1])
最初にエラーの種類を確認する
Gitが使えない原因は、必ずしもポート遮断とは限りません。表示されているエラーによって、確認すべき場所が異なります。
| 主なエラー | 考えられる原因 | 次に確認すること |
|---|---|---|
Connection timed out | ポート遮断、経路障害、プロキシ制限 | 443番ポートへの接続を試す |
Connection refused | 接続先またはネットワーク機器が通信を拒否 | 接続先、ポート、管理者設定を確認 |
Permission denied (publickey) | SSH鍵の未登録、選択ミス、権限の問題 | GitHubのSSH鍵登録と使用中の鍵を確認 |
Could not resolve hostname | DNSまたはホスト名の誤り | ssh.github.comの綴りとDNSを確認 |
| ホスト鍵の警告 | 初回接続、接続先変更、登録済み鍵との不一致 | 公式フィンガープリントと照合 |
Permission denied (publickey)まで進んでいる場合、少なくともGitHubのSSHサービスまでは到達できています。この場合は、ポートよりもSSH鍵の設定を確認する必要があります。
443番ポートへ切り替える手順
ネットワーク管理者に許可状況を確認する
設定変更の前に、次の通信が組織のルール上許可されているか確認します。
| 項目 | 内容 |
|---|---|
| 接続先 | ssh.github.com |
| ポート | TCP 443 |
| プロトコル | SSH |
| 用途 | GitHub.comのGit操作 |
「443番ポートが開いている」だけでは十分ではありません。社内のWebプロキシがHTTPS通信だけを許可している場合、SSHプロトコルの通信は遮断される可能性があります。GitHub公式ドキュメントでも、プロキシサーバーが接続を妨げる場合があると案内されています。([GitHub Docs][1])
管理者へ問い合わせる際は、「制限を回避したい」ではなく、次のように具体的に確認すると伝わりやすくなります。
GitHub.comの公式手順に従い、ssh.github.comのTCP 443番ポートへSSH接続する方法を利用したいと考えています。この通信は社内ポリシー上許可されていますか。
現在のSSH設定をバックアップする
SSH設定ファイルがすでに存在する場合は、変更前にコピーを保存します。
WindowsのPowerShellでは、次のようにバックアップできます。
if (Test-Path "$HOME\.ssh\config") {
Copy-Item "$HOME\.ssh\config" "$HOME\.ssh\config.bak"
}
macOSやLinuxでは、次のように保存できます。
[ -f ~/.ssh/config ] && cp ~/.ssh/config ~/.ssh/config.bak
SSH設定ファイルは通常、次の場所にあります。
| OS | 設定ファイル |
|---|---|
| Windows | C:\Users\ユーザー名\.ssh\config |
| macOS | ~/.ssh/config |
| Linux | ~/.ssh/config |
Windowsでメモ帳を使う場合は、ファイル名がconfig.txtにならないよう注意してください。拡張子のないconfigとして保存します。
設定変更前に443番ポートをテストする
まずはSSH設定ファイルを変更せず、次のコマンドを実行します。
ssh -T -p 443 [email protected]
接続でき、SSH鍵の認証にも成功すると、ユーザー名を含む次のようなメッセージが表示されます。
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
GitHubはSSH経由のシェル操作を提供していないため、「shell accessを提供しない」という表示は異常ではありません。この認証成功メッセージが表示されれば、443番ポートを利用したGit操作へ進めます。([GitHub Docs][1])
初回接続ではホスト鍵を必ず照合する
初めてssh.github.comの443番ポートへ接続すると、次のような確認が表示されることがあります。
The authenticity of host '[ssh.github.com]:443' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting?
ここで、内容を確認せずにyesを入力してはいけません。表示された鍵の種類とフィンガープリントを、GitHub公式のSSH key fingerprintsと照合します。
2026年9月19日時点でGitHub公式ドキュメントに掲載されている主なフィンガープリントは次のとおりです。
| 鍵の種類 | フィンガープリント |
|---|---|
| Ed25519 | SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU |
| ECDSA | SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM |
| RSA | SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s |
フィンガープリントは将来変更される可能性があるため、実際に接続するときはGitHub公式ページの最新情報も確認してください。表示された値が一致しない場合は接続を中止し、ネットワーク管理者へ確認します。([GitHub Docs][2])
SSH設定に443番ポートを登録する
テストに成功したら、~/.ssh/configをテキストエディターで開き、次の設定を追加します。
Host github.com
HostName ssh.github.com
Port 443
User git
それぞれの項目には、次の役割があります。
| 設定 | 意味 |
|---|---|
Host github.com | GitやSSHでgithub.comを指定したときに適用する |
HostName ssh.github.com | 実際の接続先をssh.github.comへ変更する |
Port 443 | SSHの接続ポートを443番へ変更する |
User git | GitHubのSSH接続で使用するユーザー名を指定する |
この設定を行うと、既存のリモートURLが次の形式でも、接続先とポートが自動的に切り替わります。
[email protected]:OWNER/REPOSITORY.git
既存のHost github.com設定がある場合は、同じブロックを複数追加するのではなく、現在の設定内容を確認して統合してください。IdentityFileなどで使用する秘密鍵を指定している場合は、その設定を消さずに残します。
GitHub公式でも、Host github.comに対してssh.github.comと443番ポートを指定する方法が案内されています。([GitHub Docs][1])
設定後の接続を確認する
設定を保存したら、今度はポートを明示せずに接続します。
ssh -T [email protected]
認証成功メッセージが表示されれば、github.com宛てのSSH接続が443番ポートへ切り替わっています。
続いて、対象リポジトリでGit操作を確認します。
git remote -v
git fetch origin
すでにリモートURLが次のSSH形式になっていれば、通常はURLを変更する必要はありません。
[email protected]:OWNER/REPOSITORY.git
設定を使わず、一度だけ443番ポート経由でクローンしたい場合は、次の形式も利用できます。
git clone ssh://[email protected]:443/OWNER/REPOSITORY.git
このURLでは、接続先と443番ポートを直接指定しています。([GitHub Docs][1])
443番ポートでも接続できない場合の切り分け
ssh.github.comの443番ポートでタイムアウトする
次のコマンドでもタイムアウトする場合は、SSH設定の問題ではなく、ネットワーク経路で通信が遮断されている可能性が高くなります。
ssh -T -p 443 [email protected]
この場合、設定ファイルを何度書き換えても解決しません。ネットワーク管理者へ、ssh.github.comのTCP 443番ポートに対するSSH通信が許可されているか確認してください。
接続がすぐ切断される
443番ポートへ接続した直後に切断される場合は、プロキシやセキュリティ製品が「443番ポート上のHTTPS以外の通信」を拒否している可能性があります。
443番ポートを利用する方法は、SSHをHTTPSの中に隠す仕組みではありません。ポート番号だけを443番へ変更しているため、通信内容を判別するネットワークでは遮断されることがあります。([GitHub Docs][1])
Permission deniedと表示される
次のエラーは、通信経路ではなくSSH鍵の問題です。
Permission denied (publickey).
主に次の点を確認します。
- 公開鍵が利用中のGitHubアカウントに登録されているか
- 対応する秘密鍵が端末に存在するか
- 別のGitHubアカウント用の鍵が選択されていないか
~/.ssh/configのIdentityFile指定が正しいか- SSHエージェントに鍵が登録されているか
詳しい接続過程を確認するときは、次のコマンドを利用できます。
ssh -vT -p 443 [email protected]
-vを付けると、接続先や選択された鍵などが表示されます。ログを社外や公開掲示板へ貼り付ける場合は、ユーザー名、端末内のパス、鍵のファイル名、IPアドレスなどを確認してから必要な範囲だけ共有してください。
設定後も22番ポートへ接続している
設定後のログにport 22と表示される場合は、configが読み込まれていない可能性があります。
次の点を確認します。
- ファイル名が
config.txtではなくconfigになっているか .sshフォルダー内に保存されているかHost github.comの綴りが正しいか- GitのリモートURLが本当に
github.comを参照しているか - GUI版Gitクライアントが別のSSH実装や設定ファイルを使用していないか
現在のリモートURLは、次のコマンドで確認できます。
git remote -v
独自のホスト別名を使っている場合は、Host github.comの設定が適用されません。その場合は、リモートURLで使っているホスト名に対応したSSH設定が必要です。
443番SSHが許可されない場合はHTTPS接続を検討する
組織がSSH通信を全面的に禁止しており、HTTPS通信だけを許可している場合は、SSHの443番接続を無理に利用するのではなく、GitHubへの接続方式をHTTPSへ変更します。
既存リポジトリのリモートURLは、次のように変更できます。
git remote set-url origin https://github.com/OWNER/REPOSITORY.git
認証方法は、組織が指定する認証ツールや資格情報管理方法に従ってください。会社支給端末では、Git Credential Manager、シングルサインオン、プロキシ設定などが管理されている場合があります。
GitHub公式も、SSH接続がファイアウォールで拒否される場合の選択肢として、HTTPSによるクローンを挙げています。([GitHub Docs][1])
GitHub Enterpriseでは利用条件が異なる
今回のssh.github.com:443を使う方法は、通常のGitHub.comを対象としたものです。
次の環境では、GitHub公式ドキュメント上、HTTPS用ポートを使ったSSH接続はサポートされていません。
| 環境 | ssh.github.com:443方式 |
|---|---|
| 通常のGitHub.com | 利用可能 |
| GitHub Enterprise Server | 非対応 |
| データ所在地対応のGitHub Enterprise Cloud | 非対応 |
GitHub Enterprise Serverでは接続先が組織専用のホスト名になるため、GitHub.com向けの設定をそのまま転用できません。管理者が案内するホスト名、ポート、認証方式を使用してください。([GitHub Docs][1])
安全に切り替えるための確認事項
作業は次の順番で進めると、設定ミスとセキュリティ上の問題を減らせます。
ssh.github.comのTCP 443番ポートが組織で許可されているか確認する- 現在の
~/.ssh/configをバックアップする ssh -T -p 443 [email protected]で一時テストする- 表示されたホスト鍵をGitHub公式フィンガープリントと照合する
- 成功後に
Host github.comのSSH設定を追加する ssh -T [email protected]とgit fetchで動作を確認する- 443番SSHが禁止されている場合は、管理者指定のHTTPS接続へ切り替える
SSHの秘密鍵、アクセストークン、回復コードは、スクリーンショットや問い合わせ用ログに含めないでください。ホスト鍵の警告が表示された場合も、確認せずに登録済み情報を削除したり、無条件で承認したりしないことが重要です。
社内ネットワークでGitHubのSSH接続がタイムアウトした場合、まず試すべき公式経路はssh.github.comの443番ポートです。ただし、443番ポートだから必ず通るわけではありません。管理者の許可、ホスト鍵の照合、設定のバックアップを行ったうえで切り替え、許可されない場合は組織指定のHTTPS接続を利用してください。
[1]: https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port “Using SSH over the HTTPS port – GitHub Docs”
[2]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints “GitHub’s SSH key fingerprints – GitHub Docs”

コメント