[macOS General] macOS Sierra にしたら SSH の度にパスフレーズを求められる問題の解決方法
github.com へ push するとパスワードを求められるようになったので調べました。
症状
ログイン直後に調べると
% ssh-add -l
The agent has no identities.
もちろん、下記で ssh-agent にもう一度登録をし直すと、毎回パスワードをたずねられることはなくなります。
% ssh-add -K ~/.ssh/id_rsa
Identity added: /Users/****/.ssh/id_rsa (/Users/****/.ssh/id_rsa)
が、そもそも ~/.ssh/config
に設定している情報を何故見てくれないのか?
対応
こちらで教えて頂きました。
結論から言うと、設定に下記の2行を加えましょう。
Host github.com
UseKeychain yes
AddKeysToAgent yes
ssh-add -D
してから試しましょう。
何故か?
OpenSSH のバージョンが v7 系に変わったから。
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.2
BuildVersion: 16C67
% ssh -V
OpenSSH_7.3p1, LibreSSL 2.4.1
以前は v6.9 だったようです。
新機能 AddKeysToAgent のデフォルトが no である。
- https://www.unixuser.org/~haruyama/security/openssh/henkouten/henkouten_7.2.txt
- 「OpenSSH 7.2/7.2p」がリリース | Think IT(シンクイット)
sshコマンドにおいてAddKeysToAgent clientのオプションとして’yes/no/ask/confirm’が設定できるようになった(デフォルトは’no’)。
UseKeychain のデフォルトが no である。
確かに man ssh_config
すると書いてあった。
AddKeysToAgent
Specifies whether keys should be automatically added to a running ssh-agent(1). If this option is set to
``yes'' and a key is loaded from a file, the key and its passphrase are added to the agent with the
default lifetime, as if by ssh-add(1). If this option is set to ``ask'', ssh will require confirmation
using the SSH_ASKPASS program before adding a key (see ssh-add(1) for details). If this option is set to
``confirm'', each use of the key must be confirmed, as if the -c option was specified to ssh-add(1). If
this option is set to ``no'', no keys are added to the agent. The argument must be ``yes'', ``confirm'',
``ask'', or ``no''. The default is ``no''.
UseKeychain
On macOS, specifies whether the system should search for passphrases in the user's keychain when attempt-
ing 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''.
大変助かりました。