pushやpullするときに、毎回パスフレーズを入力しないで済むように設定する。
設定する方法をよく忘れるので、メモ代わりに残しておく。
新しいSSHキーを生成する
ssh-agentは、SSH秘密キーとパスフレーズを登録しておくと、SSHサーバへ接続するときに登録されているパスフレーズの入力を代わりにやってくれるツール。
SSHキーの生成方法は、GitHub公式のドキュメントを参考にしている。
新しい SSH キーを生成して ssh-agent に追加する
https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
1. SSHキーの生成
$ ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private ed25519 key pair.
> Enter file in which to save the key (/Users/username/.ssh/id_ed25519): [Press enter]
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
SSHキーのファイル名を変更したいときは [Press enter]
のところで id_ed25519_github
のように指定できる。
最後にパスフレーズを2回入力したら、 ~/.ssh
ディレクトリに秘密キーと公開キーが生成される。
$ ls ~/.ssh
> id_ed25519 id_ed25519.pub
2. configファイルに設定を書き込む
~/.ssh/config
ファイル開いて、以下のように変更する。
ファイルがない場合は作成する。
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
3. 秘密キーをssh-agentに追加します
ssh-add
コマンドでSSH秘密キーとパスフレーズの登録する。-K
オプションはdeprecatedなので、換わりの --apple-use-keychain
オプションを使用している。
$ ssh-add --apple-use-keychain ~/.ssh/id_ed25519
> Enter passphrase for /Users/username/.ssh/id_ed25519: [Type a passphrase]
> Identity added: /Users/username/.ssh/id_ed25519 (your_email@example.com)
以下のコマンドで登録されている秘密キーを確認できる。
$ ssh-add -l
> 256 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com (ED25519)
4. 公開キーをクリップボードにコピー
GitHubに追加するときに必要なのでコピーしておく。
$ pbcopy < ~/.ssh/id_ed25519.pub
GitHubアカウントにSSH公開キーを追加する
1. GitHubの Settings
にある >
SSH and GPG keysNew SSH key
ボタンをクリック
2. Key
フィールドに、SSH公開キーの内容を貼り付け
SSHキーの生成で、クリップボードにコピーしておいた公開キーを貼り付ける。Title
は適当にMacとかでいいと思う。
3. Add SSH key
をクリック
保存できていれば、以下のように表示されているはず。
おわりに
以上で、パスフレーズを入力しなくてもpushやpullができるようになったはず。
GPGキーを追加してコミットにVerifiedマークをつけたい場合は以下の記事を参照して欲しい。