こちらの記事を参考にしました。
作業環境は MacOSX El Captain です。
自分の場合、登録したい鍵がいくつかあったので、シェル関数化して Bash スクリプト経由で ssh-add
するようにしました。
また、鍵ファイルの PATH とパスフレーズは ~/.ssh/mysecrets.txt
というファイルに書いておくようにしました。
# ~/.ssh/mysecrets.txt
秘密鍵1のPATH パスワード1
秘密鍵2のPATH パスワード2
:
※秘密鍵のPATH は ~/.ssh
からの相対PATHとしました。
Bash スクリプトは下のようなもの。
#!/usr/bin/env bash
set -e
ssh-add-expect() {
target=$1
pass=$2
cat <<-EOEXP | expect -
set timeout 3
spawn ssh-add $HOME/.ssh/$target
expect {
"Enter passphrase for" {
send "$pass\r"
}
}
expect {
"denied" { exit 1 }
eof { exit 0 }
}
EOEXP
}
cat ~/.ssh/mysecrets.txt | while read secret; do
ssh-add-expect $secret
done
これを例えば ssh-init.bash
として、 ~/.bash_profile
の最後に下のように書いておくと、初回ログイン時に実行してくれます。
if ! ssh-add -l >/dev/null; then
/path/to/your-script/ssh-init.bash
fi
ssh-add -l
は登録されている鍵がない場合、 $?
が 1
になったので、if
節でこれを利用しました。
これまで毎回ログイン時にパス入力していましたが、これで楽になりました。