はじめに
Github に SSH 接続することは、慣れていれば簡単なことでしょう。
しかし、久しぶりに接続失敗すると「あれ、これなんだっけな」と思うことがあるので、ここによくある事例をまとめておくことにしました。
接続で失敗した場合は参考にしてください。
また、最近は GitHub CLI (gh コマンド) を使うとこれらの設定を対話形式で自動化してくれるので、こちらを試してみても良いかもしれません。
GithubにSSH接続できないパターン
GitHubに公開鍵を登録していない
「鍵登録なんて忘れるわけないじゃん」と思うかもしれませんが、これで何度も苦しんでいる人を見かけたのでもう一度確認しましょう。
GitHubにSSHで接続するには、自分のマシンで公開鍵・秘密鍵のペアを作成し、公開鍵(.pub) をGitHubの「Settings > SSH and GPG keys」から登録する必要があります。
鍵は以下のコマンドで作成します。もし古い RSA 形式の鍵を使っているなら、この機会に新しく作るのも良いでしょう。2026年現在はセキュリティとパフォーマンスの面から ed25519 形式が推奨されています。
ssh-keygen -t ed25519 -C "your_email@example.com"
秘密鍵が読めてない
Githubに公開鍵を登録したのはいいものの、SSH接続時に自サーバに置いた秘密鍵がうまく読めてないパターンがあります。
SSH はデフォルトで ~/.ssh/id_rsa ~/.ssh/id_dsa ~/.ssh/identity などの標準的なパスにある鍵を探しに行きます。それ以外のパスで置いても読み込まれません。
また、パスがちゃんとしてるのに上手く読んでくれない場合は ~/.ssh/config の設定値を確認しましょう。もしかしたら別のパスを読みにいくような設定になっているのかもしれません。
もし ~/.ssh/config ファイルがない場合は以下のように作って明示的に設定してあげてもよいです。
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519 # 作成した秘密鍵のパスを指定
秘密鍵のパーミッションが適切でない
以下のようなエラーが出た場合は秘密鍵ファイルのパーミッションが原因です。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
秘密鍵は重要なファイルであるため、パーミッションが 777 644 などになっているとエラーが発生します。 600 (所有者のみ読み書き可能)に変更しましょう。
chmod 600 ~/.ssh/id_rsa
SSH エージェントに鍵が追加されていない
環境(特定のLinuxディストリビューションなど)によっては、鍵が自動で認識されないことがあります。以下のようなエラーが出るケースです。
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
その場合は ssh-add コマンドで、使用する鍵をエージェントに登録する必要があります。
まずは ssh-add -l して状態を確認。読み込んでほしい秘密鍵のパスがちゃんと出てこればOKです。出てこなければ、ssh-add しましょう。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
それでもダメなら
それでも上手くいかない場合は、-v オプションをつけて接続を試すと、詳細なログが出力されます。
ssh -vT git@github.com
このログの最後のほうを見れば、「鍵が見つからないのか」「認証で拒否されたのか」など、原因の切り分けが可能になります。
また、Github の公式ドキュメントも参考になります。
番外編: Github に push できない
Github に SSH 接続は成功しているのに、 git push に失敗するパターンがあります。
HTTPS で clone して ssh で push しようとしたパターン
以下のようなエラーが出た場合です。
HTTPS で clone したリポジトリはそのままでは ssh push 出来ません。
fatal: remote error:
You can't push to git://github.com/****/****.git
Use https://github.com/****/****.git
以下のように origin を書き換えてあげる必要があります。
# 現在の設定を確認
git remote -v
# URL を SSH 形式に変更
git remote set-url origin git@github.com:ユーザー名/リポジトリ名.git