GithubにSSH公開鍵を登録
GithubにSSH公開鍵を登録して、手元の秘密鍵でアクセスできるようにする方法です。 いちいちID/PWを入力する必要がなくなりますので早いうちにやっておくと良いです。 私はずっと前から対応していましたが、人に説明する機会があったので手順をメモしておきます。
Github使っている人に取ってはいまさらですが、これから使う人の参考になればと思います。
ドキュメント
https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh
概要
- 秘密鍵公開鍵ペアを作る
- ssh-agentに秘密鍵を登録
- Githubに公開鍵を登録
- 接続確認
- リポジトリの設定の変更が必要な場合
秘密鍵と公開鍵のペアを作る
手元で秘密鍵と公開鍵のペアを作ります。このうち公開鍵をGithubに渡しておき、手元の秘密鍵を使ってログインできるようになります。公開鍵は他人に知られても大丈夫ですが、秘密鍵は他人に知られてはいけません。しっかりと管理しましょう。
以下のコマンドで鍵を追加します。メールアドレスは自分のものを使いましょう。パスフレーズの設定を求められるので登録しておきましょう。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-agentに鍵を登録
以下のコマンドを実行して、ssh-agentに鍵を登録します。ssh時に使う鍵の候補に追加されます。
ssh-add ~/.ssh/id_rsa
Githubに公開鍵を登録
.ssh/以下に出力されているid_rsa.pub
が公開鍵です。この内容をgithubのsettingのSSH keyの項目にて追加・登録します。
ここまでできれば準備完了です。必要なものが揃ったので接続を試します。
接続確認
https://help.github.com/en/github/authenticating-to-github/testing-your-ssh-connection
コマンドを実行しましょう。githubへssh接続を試します。
ssh -T git@github.com
以下のようなメッセージが表示されますのでyes
と入力します。
The authenticity of host ‘github.com (IP ADDRESS)’ can’t be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)?
問題なければ以下のメッセージが続けて表示されます。これでsshによる接続の準備ができました。
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
リポジトリの設定の変更が必要な場合
gitのremoteの設定がhttps://github.com/[ユーザー名]/[リポジトリ]
のような指定方法になっていると、SSH接続が上手くいかずID/PWの入力を求められます。以下のコマンドでremoteの接続先の指定を更新することで解消できます
git remote set-url origin git@github.com:[ユーザー名]/[リポジトリ].git
おわりに
別にssh鍵を登録しなくてもID/PWでリクエストは行なえますが、pushやpullのたびに入力するのは面倒なので対応しておくといいでしょう。秘密鍵・公開鍵を使ったssh接続の基礎的な理解にもつながると思います。それほど難しくもないので困ることも少ないです。
もしも上手くいかない場合は、秘密鍵と公開鍵をまちがえているとかssh-agentに正しく登録されていないなど考えられます。エラーの内容を読んで落ち着いて対処しましょう。