ssh-agent と expect で ssh のパスフレーズ入力を自動化

  • 32
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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