Tips記事
» 2002年02月06日 00時00分 UPDATE

ssh-agentでパスフレーズをキャッシュさせたい〜ノンパスワードの実現〜

[木田佳克,ITmedia]

 sshを利用する際,パスワードを入力する手間を軽減させることが可能だ。しかし,パスフレーズまでは省略されず,この点をクリアするには次のような「ssh-agent」と呼ばれるデーモン利用が必要になる。

 ssh-agentの起動時は,パスフレーズを記録しておく鍵キャッシュが空の状態である。このため,ssh-agentの起動後には引き続きssh-addコマンドを使用してパスフレーズをキャッシュに追加させておく必要があるのだ。以上の手順は次のようになる。これらの操作は,当然ながらパスフレーズを入力する接続元で行うべき操作だ。

$ eval `ssh-agent`
Agent pid 3199

$ ssh-add
Need passphrase for /home/ykida/.ssh/id_dsa
Enter passphrase for /home/ykida/.ssh/id_dsa
Identity added: /home/ykida/.ssh/id_dsa (dsa w/o comment)
Identity added: /home/ykida/.ssh/id_rsa (/home/ykida/.ssh/id_rsa)
Identity added: /home/ykida/.ssh/identity (ykida@speed-rh)

※上記のように表示されてパスフレーズが要求されキャッシュされる

 ssh-agentに関する問題の1つは,cronジョブとの関連性を持つことができない点だ。cronによって定期的にsshを利用したrsyncを実現するといった用途には,更なる作業が必要になる。

 最後の注意点として,ssh-agentデーモンは次のようにログアウト前にkillする必要があることだ。これを自動化させるには,~/.bash_logoutに「ssh-agent -k」をフルパスで記述しておくとよいだろう。

$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 31420 killed;

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ