LoginSignup
45
38

More than 5 years have passed since last update.

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

Posted at

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
45
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
38