Permission denied (publickey)
SSH接続時に公開鍵認証に失敗した場合のエラー
概要
SSH接続時に公開鍵認証に失敗した場合に発生するエラーです。GitHubやサーバーへのSSH接続でよく見られます。
エラーメッセージ
Permission denied (publickey).
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
ssh: connect to host github.com port 22: Connection refused
原因
- SSHキーがない: SSHキーペアが生成されていない
- キーが登録されていない: GitHubやサーバーに公開鍵が登録されていない
- ssh-agentにキーがない: SSHエージェントにキーが追加されていない
- キーのパーミッション: 秘密鍵のパーミッションが不正
- 間違ったキー: 複数のキーがあり、正しいキーが使われていない
- ファイアウォール: ポート22がブロックされている
解決策
1. SSHキーの存在確認
| |
2. SSHキーの生成
| |
ベストプラクティス:
- デバイスごとに異なるSSHキーを使用する
- Ed25519を優先(RSAより高速で安全)
- 高セキュリティ環境ではFIDO2対応キー(ed25519-sk)を検討
3. ssh-agentにキーを追加
| |
4. GitHubに公開鍵を登録
| |
5. 接続テスト
| |
6. パーミッションの修正
| |
7. ~/.ssh/config の設定
| |
8. 複数キーの管理
| |
9. ポート22がブロックされている場合
| |
| |
10. HTTPSに切り替え
| |
11. サーバー側の設定(自前のサーバー)
| |
12. デバッグ
| |
トラブルシューティングフロー
ssh -vT git@github.comで詳細を確認ssh-add -lでエージェントにキーがあるか確認- キーがなければ
ssh-add ~/.ssh/id_ed25519 - GitHubに公開鍵が登録されているか確認
- パーミッションを確認
よくある間違い
- 秘密鍵と公開鍵を間違えてGitHubに登録
- ssh-agentを起動していない
- 複数のSSHキーがあり、正しいキーが選択されていない
- Windows で改行コードの問題
関連エラー
参考リンク
SSH の他のエラー
この記事は役に立ちましたか?