こんにちは、かつコーチです。
前回の記事で、GitHubが「クラウド上の共有作業場」であることを解説しました。
今回は、実際にその作業場に入るための準備、つまりアカウント作成とSSH鍵の設定を進めていきます。
「SSH鍵って何のために必要なの?」という疑問を持つ方も多いので、仕組みから丁寧に解説します。
読み終える頃には、自分のパソコンから安全にGitHubへ接続できる状態が整っているはずです。
SSH鍵とは?
SSH鍵=自分専用の「合鍵」
SSH鍵とは、パソコンとGitHubの間で安全に通信するための、暗号化された鍵のペアのことです。
たとえるなら、SSH鍵は「自分専用の合鍵を作る」ようなものだとイメージしてください。
合鍵には、家に取り付ける「錠(鍵穴)」と、それに対応する「鍵」の2つがセットで存在します。
SSH鍵もこれと同じで、GitHub側に預ける公開鍵(錠にあたる部分)と、自分のパソコンだけに置いておく秘密鍵(鍵そのもの)の2つがペアになっています。
自分のパソコンに秘密鍵さえあれば、パスワードを毎回入力しなくても、GitHubという作業場に安全に出入りできるようになるのです。
なぜパスワードでなくSSH鍵を使うのか
以前はGitHubへの接続にパスワードを使う方法もありましたが、現在はセキュリティ強化のため、pushやpullのたびにパスワードで認証する方式は廃止されています。
パスワードは使い回しや漏洩のリスクがありますが、SSH鍵は自分の合鍵を他人に渡さない限り、なりすましのリスクが低い認証方法です。
そのため現在は、SSH鍵(もしくはPersonal Access Token)を使った接続が標準的な方法になっています。
基本の設定手順
手順1:GitHubアカウントを作成する
まずはGitHub公式サイトにアクセスし、メールアドレス・ユーザー名・パスワードを入力してアカウントを作成します。
ユーザー名は今後、リポジトリのURLなどにも使われるため、覚えやすく短いものを選んでおくのがおすすめです。
手順2:SSH鍵を生成する
ターミナル(Macの場合は「ターミナル」、Windowsの場合はGit Bash)を開き、以下のコマンドでSSH鍵のペアを作成します。
ssh-keygen -t ed25519 -C "your_email@example.com"
実行すると保存場所を聞かれるので、特にこだわりがなければそのままEnterキーを押して進めます。
パスフレーズ(鍵にかけるロック)の入力も求められますが、空欄のままEnterでも問題ありません。
手順3:公開鍵をGitHubに登録する
作成した公開鍵の中身を表示し、コピーします。
cat ~/.ssh/id_ed25519.pub
表示された文字列(ssh-ed25519から始まる1行)をすべてコピーしたら、GitHubの「Settings」→「SSH and GPG keys」→「New SSH key」から貼り付けて登録します。
手順4:接続テストを行う
登録が終わったら、実際に接続できるかテストしてみましょう。
ssh -T git@github.com
初回は「本当に接続していいか」確認する表示が出るので、yesと入力します。
以下のように表示されれば、合鍵がGitHub側の錠にぴったり合っている証拠です。
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
つまずきやすい設定・注意点
ssh-keygenを実行する際、すでに別のSSH鍵を作成済みだと、保存場所の確認で上書きしてしまうことがあります。
心当たりがない場合は、保存場所を~/.ssh/id_ed25519_githubのように変更し、既存の鍵と衝突しないようにしましょう。
よくあるつまずきポイント・エラー対処
「Permission denied (publickey)」に遭遇した話
私が実際に手を動かしていて最初につまずいたのが、この認証エラーでした。
❌ Before
SSH鍵を作成した直後にgit cloneを実行したところ、以下のエラーが表示されて接続できませんでした。
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
合鍵を作ったのに、なぜか錠を開けられない状態だったのです。
✅ After
原因を調べたところ、公開鍵をコピーする際に文字列の一部が欠けたままGitHubに登録してしまっていたことがわかりました。
改めてcatコマンドで公開鍵全体を表示し直し、ssh-ed25519の先頭からメールアドレスの末尾まで、1文字も欠けないようコピーし直したところ、無事に接続できました。
# 公開鍵の中身を最初から最後まで確認
cat ~/.ssh/id_ed25519.pub
# 接続テストで確認
ssh -T git@github.com
この経験から、SSH鍵まわりのエラーは「鍵そのものが壊れている」よりも「コピーミス」が原因であることが多いと学びました。
応用・一歩先の使い方
複数のGitHubアカウントを使い分ける場合のSSH設定
仕事用と個人用など、複数のGitHubアカウントを1台のパソコンで使い分けたい場合は、~/.ssh/configファイルに接続先ごとの設定を書き分けることで対応できます。
# ~/.ssh/config
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
これは、同じ玄関でも用途ごとに違う合鍵を使い分けるイメージです。
クローン時のURLをgit@github-work:username/repo.gitのように書き換えることで、使う鍵を切り替えられます。
まとめ
この記事のポイント
- SSH鍵とは、GitHubに安全に接続するための「自分専用の合鍵」のこと
- 公開鍵をGitHub側に登録し、秘密鍵は自分のパソコンだけに保管する
ssh-keygen→公開鍵の登録→ssh -T git@github.comの接続テストが基本の流れ- エラーの多くは「コピーミス」が原因なので、公開鍵は全文を正確にコピーする
次に読むべき記事
接続の準備が整ったら、次は実際にリモートリポジトリとやり取りする方法を見ていきましょう。
「リモートリポジトリとpush・pull・clone・fetch」で、荷物のやり取りに例えながら解説しています。