SSH
keychain

sshのパスフレーズ入力を、keychainで省略する

More than 1 year has passed since last update.

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などに書いておくと良いです。

参考