ssh-agent
を使えばパスフレーズの入力を自動化できることを教えてもらったのでメモ。
~/.bash_profile
に以下のコードを書くと、ログイン時に ssh-agent
が起動され、
さらに expect
で自動的にキーとパスフレーズが登録される。
eval `ssh-agent`
# 秘密鍵ファイル
KEY_FILENAME='id_rsa'
# パスフレーズ
PASSPHRASE='XXXXXXXXXX'
expect -c "
set timeout -1
spawn ssh-add $HOME/.ssh/$KEY_FILENAME
expect {
\"Enter passphrase for\" {
send \"$PASSPHRASE\r\"
}
}
expect {
\"denied\" { exit 1 }
eof { exit 0 }
}
"
ただ、これで起動した ssh-agent
はログアウトしてもプロセスが残ったままになるようなので、
~/.bash_logout
に以下のコードを書いてログアウト時にプロセスを kill するようにする。
ssh-agent -k