SSHKeychainを使ってパスフレーズ入力なしでsshを使う(MacOS X)
svn+sshを使ってリモートのレポジトリを使うときに、いちいちパスフレーズを入力するのが面倒だったので、MacOS Xでssh-agentが使えないかどうか調べてみた。
> ssh-agent zsh
とかしてssh-agent経由でshellを実行すれば使えるけど、2つめのshellはどーすんだとか、コマンドライン以外から起動したssh client(あるかどうかは知らない)はどーすんだとか。
Xなら、ログインするときにopenssh-askpassを使ってパスフレーズの入力と環境変数のセットをすればいいけど、MacOS Xだとどうなるんだろう?
とさまよっていたら、よさげなものを発見。
どういうものかというと、keychainにパスフレーズを保存しつつ、グローバル環境変数をさわってssh-agent関係の環境変数をセットしてくれる。ログイン時に起動するようにしておけば、一回パスフレーズを入力するだけで、以後のsshは全部パスフレーズなしでOK。ステキ。
さて、気になる使い方。まずはSSHKeychainのdmgファイルをダウンロードして展開、中のSSHKeychainをアプリケーションフォルダにコピーする。
起動すると、Dockとmenu barに表示される。まずは環境設定を開く。
「SSHキー」タブを選択して「新規」ボタンを押すと、SSHキーの生成ができる。なれてる人は、コマンドラインからssh-keygenを実行してSSHキーを生成しておいてから、「+」ボタンで追加してもいいかも。
次はSSHKeychainにグローバル環境変数をセットさせる設定をする。「環境変数」タブを選択して、「グローバル環境変数を管理」をチェックする。
ここで一度ログアウトしてからログインしなおして、SSHKeychainをもう一度起動する。最後に、SSHKeychainのメニューから、「エージェント>すべてのキーを追加」でパスフレーズを入力する。
「パスフレーズをキーチェーンに登録」をチェックしておけば、次回からパスフレーズの入力すら不要。
あとはターミナルを開いてsshすれば、SSHキーを登録しておいたホストへパスフレーズ入力なしでログインできる。いえい。
ちなみに、パスフレーズをキーチェーンに登録しておくと、SSHKeychain起動時に自動的にパスフレーズを入力してくれる。つまり、ログイン時にSSHKeychainを起動するように設定しておけば、ログイン時のパスフレーズ入力すら不要。すげー、恐いくらいに便利だぜ。