なぜ書いたか
GitHubからリポジトリを、httpsプロトコルではなくgitプロトコルでクローンしようとしたが、GitHubに以下のメッセージが表示されていた。
”You don't have any public SSH keys in your GitHub account. You can add a new public key, or try cloning this repository via HTTPS. ”
無視してgitプロトコルでクローンを試みたが、できなかった。
上記のメッセージは、GitHubアカウントに公開されたSSH鍵が存在しないため、リポジトリをSSH経由でクローンできないことを示している。
SSH鍵は、GitHubに対して安全な方法で接続するための認証情報であり、GitHubにアクセスするために必要。
よって、解決するには、新しい公開鍵を追加する必要がある。
余談:httpsプロトコルとgitプロトコルの違い
両者とも、gitサーバーに接続するために使用されるプロトコルだが、httpsプロトコルは読み込みのみサポートしているのに対し、gitプロトコルは、読み込みと書き込みの両方をサポートしているという違いがある。
SSHとは接続方法の一つで、ローカルに秘密鍵と公開鍵を予め作り、GitHubに公開鍵を登録しておくことで行える通信方法。
GitHubにSSH鍵を追加する
1. .sshディレクトリが存在するか確かめる
デフォルトでは、SSH鍵は~/.sshディレクトリに保存される。このディレクトリが存在しない場合は、SSH鍵を生成する前にディレクトリを作成する必要がある。
以下のコマンドで確かめる。
ls ~/.ssh
もし、.sshディレクトリが存在する場合は、"id_ed25519"というファイルと、"id_ed25519.pub"というファイルがあるはず。
.sshディレクトリが存在しない場合は、以下のコマンドを実行して、ディレクトリを作成する。
mkdir ~/.ssh
このコマンドで、ホームディレクトリ直下に.sshというディレクトリが作成される。
2. SSH鍵を生成
以下のコマンドを実行
ssh-keygen -t ed25519 -C "your_email@example.com"
3. 公開鍵を確認
~/.ssh/id_ed25519.pubファイルの中身を確認する。
cat ~/.ssh/id_ed25519.pub
このコマンドで返ってきた文字列が、公開鍵として使用される。これをコピーする。
4. 公開鍵をGitHubに追加する
GitHubのサイトにログインし、右上のアカウントアイコンをクリックし、"Settings"を選択。"Settings"ページで、左側のメニューから"SSH and GPG keys"を選択し、"New SSH key"をクリック。"Title"フィールドに任意の名前を入力し、"Key"フィールドに先ほどコピーした公開鍵の内容をペーストする。最後に、"Add SSH key"をクリックして鍵を追加する。
5. 鍵が正常に追加されたかどうか確認する
以下のコマンドを実行し、”Hi username! You've successfully authenticated, but GitHub does not provide shell access.”というメッセージが返されたら、成功。
ssh -T git@github.com