sshのパスフレーズ入力を、keychainで省略する
sshログインの方式に公開鍵認証(パスフレーズあり)を使用していますが、パスフレーズを毎回入力するのが面倒です。このパスフレーズ入力を省略するため、keychain
を使います。
keychainとは
Windowsアプリならpagent、OS Xなら標準のキーチェーンでパスフレーズ入力を省略できますが、CygwinやLinuxシェルでは使えません。.ssh/config
にパスフレーズを書くという方法もありますが、これはちょっと…(それを言ったらOS Xのキーチェーンもどうなのという話ですが)。
そこで、ssh-agent
というツールで秘密鍵とパスフレーズをキャッシュすることで、パスフレーズ入力を省略することができます。しかし、このssh-agent
は少々使い勝手が悪く、色々と小細工する必要があります。そこで、keychain
というssh-agent
フロントエンドを使用することで、ssh-agent
の面倒な事を引き受けてくれます。
つまり、keychain
を使用すると、秘密鍵とパスフレーズを良い感じにキャッシュしてくれて、パスフレーズ入力を省略することができます。
使い方、設定方法
以下のように使用します。
keychain -q ~/.ssh/id_rsa ~/.ssh/id_rsa_2
source ~/.keychain/$HOSTNAME-sh
keychain
には、複数の秘密鍵を指定することができます。例えば、サービスごとに異なる鍵を運用している場合などに役立ちます。
keychain
をそのまま呼び出すと色々カラフルなログを出力するので、-q
で黙らせます。
keychain
を呼び出すと、~/.keychain/
に色々とファイルを出力します。これらはssh-agent
が必要とする環境変数で、お約束としてsource
で反映します。
起動時にkeychainを呼ぶ
ログイン時やCygwin起動時にkeychain
を呼び出して鍵をキャッシュさせたい場合、.bash_profile
などに書いておくと良いです。
参考リンク
- using keychain under cygwin
.keychain/master-sh
と書いてありますが、2016/2/9時点では.keychain/$HOSTNAME-sh
です。
- keychainとssh-agentを使用しパスフレーズ無しにsshログイン
- ssh-agentとkeychain
- keychainでsshのprivate鍵パスワード入力回数を減らそう
- ssh-agent & keychain の勉強