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 の勉強