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 keys にある New SSH key ボタンをクリック

2. Key フィールドに、SSH公開キーの内容を貼り付け

SSHキーの生成で、クリップボードにコピーしておいた公開キーを貼り付ける。
Title は適当にMacとかでいいと思う。

3. Add SSH key をクリック

保存できていれば、以下のように表示されているはず。

おわりに

以上で、パスフレーズを入力しなくてもpushやpullができるようになったはず。
GPGキーを追加してコミットにVerifiedマークをつけたい場合は以下の記事を参照して欲しい。