【初心者向け】GitHubとSSH接続する方法|鍵の作り方からpushエラーの対処法まで完全ガイド

Work Hacks

おつかれさまです!
記事を読んでくださりありがとうございます🌞

GitHubにpushしようとしたとき、こんなエラーに出くわしたことはありませんか?

Permission denied (publickey)
fatal: Could not read from remote repository.
shin.log
shin.log

「え、なんで?ちゃんとcloneしたのに…!」

思わずそうつぶやいてしまった方、少なくないはずです。
または、毎回パスワードの入力を求められて「これ、地味にストレスなんだけど…」と感じたことは?

実はそれ、SSHの設定が正しくできていないことが原因かもしれません。


GitHubとSSHを連携しておくと、次のようなメリットがあります!

  • 毎回の認証をスキップできて、pushやpullが快適に!
  • セキュアな通信ができて、安全面もバッチリ

ただ、SSHや公開鍵・秘密鍵と聞くとハードルが高く感じますよね。。。

でも大丈夫です!🙆
この記事では、次のトピックで初心者にもわかる言葉で一歩ずつ解説していきます。

  • SSHキーの作成方法
  • GitHubとの連携手順
  • pushできないときの対処法(あるあるなミス付き)

それでは、ゆっくりしていってください🐱

✔︎ こんな人向けです

・GitHubでpushしようとしたらエラーが出て焦ったことがある方
・GitHubとの連携をスムーズにして、ストレスなく開発を進めたい
・SSHってよく聞くけど、ちゃんと設定できているか自信がない…という方

✔︎ この記事を読むと、、、

⭐️ GitHubとのSSH連携をゼロから安全に構築できる
⭐️ SSHキーの作成からGitHubの設定までコマンド付きで解説
⭐️ pushできない原因のチェックポイントと対処法がわかる

SSH接続とは?HTTPSとの違いと仕組みを理解しよう

GitHubでリポジトリを操作する際、リモート接続方法には主に以下の2種類があります:

接続方式    特徴      認証方法                 
HTTPSURLで接続毎回パスワード入力(またはトークン)
SSH鍵で接続鍵ペアによる認証(パスワード不要)

SSH接続のメリットはこんな感じです!

  • 毎回のパスワード入力が不要で快適
  • セキュリティが高い(鍵による認証)
  • 1度設定すれば、その後の操作がスムーズ!
shin.log
shin.log

毎回パスワード入れるの、地味に面倒だった、、、
これはありがたいですね👍

SSH接続の仕組みやどのように使うかを理解したい方はこちらの記事をどうぞ!
👉 【初心者向けSSH入門】Macから仮想マシン(CentOS)に接続する方法をわかりやすく解説!

このあと、実際にSSHキーを作成し、GitHubと接続するステップに進みます。
一緒にやってみましょう!

SSHキーを作成して、GitHubに登録しよう!

SSH接続の仕組みがわかったところで、いよいよ実際の設定作業に入っていきましょう!
ここからは以下の流れで進めていきます👀(MacOSで進めていきます!)

  1. ローカルPCでSSHキーを作成する
  2. 公開鍵をGitHubに登録する
  3. 接続確認のテストをする

SSHキーを作成する

まずは、ローカルPCのターミナルで次のコマンドを打ちます!
コマンドの詳細についてはあとで整理します🙌

ssh-keygen -t ed25519 -C "user@example.com" -f ~/.ssh/id_ed25519
shin.log
shin.log

メールアドレスはGitHubに登録しているものです!

実行後に次のような手順で聞かれることがあります。

Enter file in which to save the key (/Users/あなたのユーザー名/.ssh/id_ed25519): 

Enter passphrase (empty for no passphrase): 

どちらもEnterを押して進んでOKです!
パスフレーズはセキュリティを高めたい方は入力してみましょう🔐

ssh-keygenコマンドについて深掘り!

ssh-keygenコマンドはSSHのキーペアを作成しますが、
オプションについて整理しておきましょう👀

shin.log
shin.log

-t, -C, -f とかって何を表しているんだろう??

オプション 説明・用途
-t鍵ペアのアルゴリズムを指定(例:rsa, dsa, ecdsa, ed25519)
-C公開鍵にコメントを付与(例:-C “user@example.com“)
-f生成する鍵のファイル名(保存先)を指定

今回は最低限のオプションをつけましたが、
他にもオプションがあるので必要があれば追加してください!

また鍵ペアのアルゴリズムですが、それぞれ特徴や用途が異なりますが、
今回は、高い安全性、高速処理ができるed25519を指定しました!

ちなみに、.sshディレクトリ内に今作ったキーペアができていればOKです!
もし違うディレクトリに作ってしまった場合は.sshディレクトリに移動しておいてください👍

$ ls -l ~/.ssh

# 期待する出力
# -rw-r--r--@ 1 user  staff   103  5 16 12:15 config
# -rw-------  1 user  staff   432 10  4  2024 id_ed25519
# -rw-r--r--  1 user  staff   114 10  4  2024 id_ed25519.pub

秘密鍵(例:id_ed25519)は絶対に共有しないでください!
公開鍵(例:id_ed25519.pub)のみを共有するようにしてください!

shin.log
shin.log

秘密鍵が漏洩すると、その鍵を使って
悪意のある第三者にアクセスされる危険があります。。。

公開鍵をGitHubに登録する

作成された公開鍵をGitHubに登録します。
まずは公開鍵の中身を確認します!

cat ~/.ssh/id_ed25519.pub

表示された長い文字列をすべてコピーします。
(ssh-ed25519 AAAAC3… で始まる行)

次に、GitHub側の設定に進みます!
GitHubのホーム画面の右上(自分のアイコン)を押してSettingに進みます!

左のサイドバーにSSH and GPG keysがあるので選択します!

右上の「New SSH key」をクリック!
私は事前に作っているのですでに存在しています👀

Titleは何でも大丈夫で自分がわかる名前にしておきます。
Keyの部分に先ほどコピーした公開鍵の内容を保存すれば完了です✨

shin.log
shin.log

何度でもやり直せるので安心してOKです!

接続できるか確認する

GitHubとの連携ができたかどうかをコマンドで確認してみましょう!

ssh -T git@github.com

初回は次のような表示が出ます:
”yes”と入力してEnterを押します!

The authenticity of host 'github.com' can't be established...
Are you sure you want to continue connecting (yes/no)?

うまくいけば、次のような表示が出ます!

Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
shin.log
shin.log

ここまでできたら、連携完了!
Git管理を始めましょう👍

連携はできているのでGitHub上にリポジトリを作って、クローンし
ローカルで編集、コミット、プッシュの流れがスムーズになります👀

勉強のアウトプットとしてTILリポジトリを作ってもいいですね!
👉 【初心者向け】TILの始め方|学びを継続できるアウトプット習慣とGitHub活用術を丁寧に解説

pushできないときのトラブルシューティング

SSH接続の設定を終えたのに、git push したときに
こんなエラーが出て困った経験、ありませんか?

Permission denied (publickey).
fatal: Could not read from remote repository.
shin.log
shin.log

「えっ、さっき接続テストは成功したのに!?💦」

あるあるですね、、、
ここでは、よくあるエラーとその原因・解決策を順番に見ていきます👀

ケース1:Could not read from remote repository

原因はリモートのURLが間違っていたり、HTTPS接続のままになっていたりするケース。

まずは現在のリモートURLを確認します!

git remote -v

https://github.com/〜〜 と表示されていたら、SSH形式に変更しましょう!

git remote set-url origin git@github.com:your-username/your-repo.git
shin.log
shin.log

「最初にcloneしたときのURLが
httpsのままだったパターン…あるある!」

ケース2:Permission denied (publickey)

これはGitHubが「認証できません」と言っている状態です。

原因としては公開鍵がGitHubに正しく登録されていない
プッシュする側の鍵とGitHub上の鍵が異なるなどがあります。

そんな時は次のコマンドで今使われている鍵を確認しましょう!

$ ssh -T git@github.com -v 2>&1 | grep -i "public key"

debug1: Offering public key: /Users/user/.ssh/id_ed25519 ED25519 SHA256:~~~ explicit

Offering public keyが自分で登録しているものかどうか確認します👀

shin.log
shin.log

問題なさそうなのにエラーが出るって時はこの可能性があります!
私はこのエラーと長いこと格闘してました、、、

それでもうまくいかないときは、、、

うまくいかない時は、いったんリセットしてみましょう🙌
ここら辺にも原因があるかもです、、、

  • 鍵を作り直してみる(前の鍵をGitHubから削除→再登録)
  • 鍵のパーミッション(権限)がおかしい可能性も → chmod 600 ~/.ssh/id_ed25519

まとめ:SSH連携は一度つながれば、開発が一気に快適になる!

ここまでで、GitHubとSSHを安全につなぐ方法をひと通り学んできました。
最後に、この記事で扱ったポイントをざっくり振り返ってみましょう👇

✔︎ 学んだこと!

・SSH接続は、パスワードなしでpush/pullできてセキュアな通信が可能!
ssh-keygenコマンドで鍵ペアを作成、GitHubに登録!
・pushできない時はリモートURLや使用している鍵を確認!

最初は少し複雑に感じるSSH設定ですが、一度自分の手でつなげてみると世界が変わります

「わからないまま」で放置するより、
「ちょっと不安だけど試してみる」ことで、技術が“自分のもの”になっていきます。

shin.log
shin.log

他にも、MacOSでCentOSの環境を作る記事も書いてます!

コメント

タイトルとURLをコピーしました