GitHubのSSH接続エラーを解決する方法
こんにちは、とまだです。
GitHubにコードをプッシュしようとしたら、 「Permission denied」というエラーが出て困ったことはありませんか?
実は、SSH接続の設定は意外と奥が深いんです。 でも、ポイントさえ押さえれば難しくありません。
今回は、GitHubのSSH接続で起きやすいエラーと、 その解決方法を詳しく解説していきます。
SSH接続とは?
SSH接続は、安全にGitHubと通信するための方法です。
毎回パスワードを入力する代わりに、 「鍵」を使って認証を行います。
これは、家の鍵と同じような仕組みです。 鍵穴(公開鍵)をGitHubに設置して、 手元の鍵(秘密鍵)で開錠するイメージです。
なぜSSH接続を使うのか
パスワード認証には、いくつか不便な点があります。
まず、毎回入力するのが面倒です。 また、パスワードが漏れるリスクもあります。
一方、SSH接続なら、 一度設定すれば自動で認証されます。 セキュリティも高く、安心して使えます。
鍵の仕組みを理解しよう
SSH認証では、2つの鍵を使います。
公開鍵は、誰に見られても大丈夫な鍵です。 秘密鍵は、絶対に他人に見せてはいけない鍵です。
この関係は、銀行の印鑑に似ています。
印影(公開鍵)は銀行に登録しますよね。 でも、印鑑そのもの(秘密鍵)は自分で管理します。
GitHubも同じです。 公開鍵をGitHubに登録し、 秘密鍵は手元のPCに保管します。
SSH鍵を作成する方法
では、実際に鍵を作ってみましょう。
ターミナルを開いて、以下のコマンドを実行します。
# ed25519形式で鍵を作成
ssh-keygen -t ed25519 -C "your-email@example.com"
このコマンドを実行すると、 保存場所を聞かれます。
特に理由がなければ、 そのままEnterを押して進めましょう。
次に、パスフレーズの設定画面が出ます。 これは鍵にかける「南京錠」のようなものです。 設定しておくと、より安全になります。
作成された鍵を確認する
鍵の作成が完了したら、
~/.ssh/フォルダを確認してみましょう。
以下の2つのファイルができているはずです。
~/.ssh/id_ed25519 # 秘密鍵(絶対に公開しない)
~/.ssh/id_ed25519.pub # 公開鍵(GitHubに登録する)
拡張子に.pubがついているほうが公開鍵です。
間違えないように注意してくださいね。
GitHubに公開鍵を登録する
鍵ができたら、GitHubに登録します。
まず、公開鍵の内容を表示しましょう。
cat ~/.ssh/id_ed25519.pub
表示された文字列をすべてコピーします。
次に、GitHubの設定画面を開きます。
- 右上のプロフィールアイコンをクリック
- 「Settings」を選択
- 「SSH and GPG keys」をクリック
- 「New SSH key」ボタンをクリック
ここで、先ほどコピーした公開鍵を貼り付けます。
タイトルは「自宅PC」や「会社PC」など、 わかりやすい名前をつけておくと管理しやすいです。
最後に「Add SSH key」をクリックして完了です。
よく発生するエラーと解決方法
SSH設定でつまずきやすいエラーを見ていきましょう。
Permission denied (publickey)
このエラーは本当によく見かけます。
原因はいくつか考えられます。
まず、公開鍵がGitHubに登録されているか確認しましょう。 意外と登録し忘れていることがあります。
次に、使っている鍵が正しいか確認します。 複数の鍵を作っていると、 違う鍵を使っていることがあります。
また、秘密鍵のパーミッションも重要です。
# 秘密鍵のパーミッションを確認
ls -la ~/.ssh/id_ed25519
# 600に設定(自分だけが読み書き可能)
chmod 600 ~/.ssh/id_ed25519
パーミッションが緩いと、 SSHが安全でないと判断してエラーになります。
Host key verification failed
このエラーは、接続先の確認に失敗したときに出ます。
SSHは接続先のサーバーを記憶しています。 その記憶と実際のサーバーが違うと、 「なりすましかも?」と警戒するんです。
これは、友達の電話番号が急に変わったときに、 「本当に本人?」と疑うのと同じです。
解決方法は、記憶をリセットすることです。
# known_hostsからGitHubの情報を削除
ssh-keygen -R github.com
その後、もう一度接続すれば、 新しい情報を記憶してくれます。
Could not resolve hostname
このエラーは、GitHubのアドレスが見つからないときに出ます。
まず、インターネット接続を確認しましょう。 Wi-Fiが切れていたり、 会社のネットワークで制限があったりしませんか?
また、URLのスペルミスも意外と多いです。
github.comをgithab.comと打っていないか、
もう一度確認してみてください。
トラブルシューティングのチェックリスト
エラーが解決しないときは、 以下の項目を順番に確認してみてください。
基本的な確認項目
まず、これらの点をチェックしましょう。
- 秘密鍵のパーミッションは600になっているか
- 公開鍵はGitHubに正しく登録されているか
- SSHのURLを使っているか(HTTPSではないか)
- ネットワーク接続は正常か
特に、URLの形式は見落としがちです。
# SSH形式(これを使う)
git@github.com:username/repository.git
# HTTPS形式(パスワード認証になる)
https://github.com/username/repository.git
SSH接続を使いたいなら、
必ずgit@で始まるURLを使いましょう。
複数の鍵を使い分ける場合
プロジェクトごとに鍵を分けたいときもありますよね。
そんなときは、~/.ssh/configファイルを活用します。
# プロジェクトA用の設定
Host github-projectA
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_projectA
# プロジェクトB用の設定
Host github-projectB
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_projectB
このように設定すると、 プロジェクトごとに鍵を使い分けられます。
使うときは、こんな感じです。
# プロジェクトA用の鍵でクローン
git clone git@github-projectA:username/repo.git
便利ですが、設定を間違えやすいので注意しましょう。
日常的な運用のコツ
SSHエラーを減らすには、 日頃の管理が大切です。
鍵の整理整頓
使わなくなった鍵は削除しましょう。
GitHubの設定画面で、 古い鍵が残っていませんか?
退職したPCの鍵や、 壊れたPCの鍵が残っていると、 セキュリティリスクになります。
定期的に見直して、 不要な鍵は削除する習慣をつけましょう。
秘密鍵の取り扱い
秘密鍵は、絶対に共有してはいけません。
これは、家の合鍵を配るようなものです。 チームで共有したくなっても、 各自で鍵を作るのが正解です。
また、秘密鍵をGitにコミットしないよう、
.gitignoreに追加しておきましょう。
# .gitignoreに追加
~/.ssh/id_*
*.pem
うっかりコミットしてしまうと、 取り返しがつきません。
エラーが出たときの心構え
SSHエラーは、誰でも経験します。
焦らずに、一つずつ確認していけば、 必ず解決できます。
エラーメッセージをよく読んで、 何が問題なのか理解することが大切です。
それでも解決しないときは、 遠慮なく周りに聞いてみましょう。
まとめ
GitHubのSSH接続エラーについて解説しました。
ポイントをおさらいすると、以下のとおりです。
- 公開鍵と秘密鍵の役割を理解する
- 秘密鍵のパーミッションを適切に設定する
- 公開鍵をGitHubに正しく登録する
- エラーメッセージを読んで原因を特定する
SSH設定は最初は難しく感じるかもしれません。
でも、一度理解してしまえば、 とても便利な仕組みです。
エラーに遭遇しても、 この記事を参考に解決してみてくださいね。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →