昨年11月に新しい Macbook Pro を購入して、12月にようやく環境移行などの設定をしはじめたが、これまでできていた SSH接続パスフレーズの Keychain 保存ができない。 SSH の接続が必要な Git 利用時なんかでも、毎回パスの入力を求められてしまうようになった。
も、もしや、macOS Sierraって、 SSH で キーチェーン使えない!?
— ハム (@h2ham) 2016年12月12日
Twitter でもつぶやいたが、解決にたどり着けず。自分も検索でたどりついていたが、参考リンクのリプライをもらうものの、解決にはいたらず。
macOS Sierra のSSH接続で、秘密鍵へのパスを覚えてくれない問題 – Qiita
とりあえず AddKeysToAgent yes
を .ssh/config
に書いて対処を。しかし、この方法は、再起動するたびに再入力をする必要があった。
そんな状態で年末も過ごしていたが、別件で SSH の検索をしていると、解決方法が見つかっていたようなので、SSH 接続で Keychain が使われない問題の対応方法をメモとしてエントリー。
Mac の Keychain 保存を有効にするオプション
以前の検索時にそれっぽいことは書いていなかったけど、再度読んでみると、回答が投稿されていた。
difficulties with ssh-agent in macOS Sierra : osx
.ssh/config
で以下のように設定
.ssh/config
AddKeysToAgent yes
UseKeychain yes
AddKeysToAgent は macOS Sierra の OpenSSH が 7.3 になったことによる変更。
しかし、この設定だけだと、前述の通りで再起動などで再入力を求められる。
重要なのは2行目の UseKeychain
これを yes に設定しておく。
Mac の ssh_config
SSH の ssh_config には AddKeysToAgent
についは書いていたけど、 UseKeychain
にはオプションがない。しかし、Mac の ssh_config には記載があった。
man ssh_config mac OS 10.12.2 - 6e43ab17
Mac で $ man ssh_config
と叩くと出て来る説明は以下の通り。
UseKeychain
On macOS, specifies whether the system should search for passphrases in the user's keychain when attempting to use a particular key. When the passphrase is provided by the user, this option also specifies whether the passphrase should be stored into the keychain once it has been verified to be correct. The argument must be ``yes'' or ``no''. The default is ``no''.
設定後に何も指定がないパターン、 AddKeysToAgent
だけがあるパターン UseKeychain
だけがあるパターン、 どちらも指定があるパターンを試して、後者2つが再起動をしても再入力求められずに接続ができたことを確認。
セキュリティ的には毎回入力したほうがいいのでしょうけど、やはり保持できていないと地味に不便だったので今回設定したことで今後は楽になることでしょう。