暗号鍵をつかってみる

 外からパスワードでsshするのはセキュリティ的に問題がありそうな気がしてきたので、暗号鍵を使い方法でsshするようにしてみました。そのときのメモ。今回の場合はOpenSSHの場合みたい。


 まずは鍵を作成。以下サーバー側での作業。

$ssh-keygen -t dsa

.sshにid_dsaとid_dsa.pubが作成される。
次にid_dsa.pubをauthorized_keysに書き込む。

$cat id_da.pub >> authorized_keys

これでたぶん大丈夫なはず。authorized_keysのパーミッションは644?

 次にid_dsaをクライアント先に移動。

$scp id_dsa User@Host:/home/User/.ssh

相手先のディレクトリにid_dsaが無いのを先に確認すること。


 後はsshすればパスワードじゃなくてパスフレーズを聞いてくれるはず。

 のハズなのですが、Macがクライアントだとパスワード聞いてきます...。Ubuntuだとうまくいったのですけどね。後で調べておこう。

解決策

 ssh-agentを試してみる。

$ssh-agent $SHELL
$ssh-add ~/.ssh/id_dsa

 2行目のときにパスフレーズを聞いてくるはず。あとは普通にssh。今度は聞かれなくなった。こっちだとシェルを終了するまでは2度とパスフレーズを聞いてこなくなる。便利便利。

 注意としてはしばらくコンピュータから離れるときは誰かにいじられると危ないので

$ssh-add -D

で登録した鍵ファイルを全て削除するか、

$ssh-agent -k

ssh-agentを終了する。いちいちssd-agentを起動したり終了したりするのが面倒なら、.bashrc等に

eval `ssh-agent`

.bash_logout等に

eval `ssh-agent -k`

と書き込んでおく。


 これでとりあえずはパスワードなしでログインできるようになったので、設定からパスワードからのログインを許可しないようにすれば良い。ただ、設定ファイルの書き方をよく知らないのでまた次回の話。