macOS で再起動しても ssh agent に秘密鍵を保持させ続ける二つの方法


背景

まず前提知識として、ssh agent に秘密鍵を登録するには、通常次のようにする

$ ssh-add ~/.ssh/id_rsa

マシンを再起動すると消えるので、その場合、再度 ssh-add する必要がある。

macOS の ssh agent には特別に keychain に秘密鍵を登録する -K オプションがあり、それを使うと再起動のたびに ssh-add する手間を省くことができる。

$ ssh-add -K ~/.ssh/id_rsa

以前はこれだけで良かったのだが、Sierra (10.12) 以降では keychain に保存はされるものの、再起動時に自動では読み込まれなくなったので解決方法を記す。


1. .ssh/config に macOS 特有設定を書く

以下のような設定を .ssh/config に書いておくと、初回 ssh 時に keychain から自動で読み込まれるようになるのでお使い頂ける。

Host *

UseKeychain yes
AddKeysToAgent yes


2. ssh-add -K を打ち込む

ssh-add -K

のように秘密鍵の指定なしで打ち込むと、Keychain から読み込まれるので、これを .bashrc にでも書いてシェル起動時に読み込まれるようにすれば解決できる。


所感

個人的には 1. がオススメです。