SSH Key認証

いつも忘れてしまうので、メモです。

SSHKey認証する方法

まずクライアントマシンで秘密鍵を作ります。今回はrsaで作成しました。

ssh-keygenを実行してキーを作成します。パスフレーズが聞かれるので同じパスワードを2回入力します。

$ssh-keygen -t rsa
Generating public/private dsa key pair.
Enter file in which to save the key (/Users/takahashi/.ssh/id_rsa):         
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

次に、サーバーに公開鍵を転送します。間違っても平文で送らないようにそして、authorized_keysに転送した公開鍵を登録します。

$scp .ssh/id_rsa.pub username@servername:.
$ssh user@hostname "cat id_rsa.pub >> .ssh/authorized_keys"

これでSSHKey認証ができるようになりましたが、このままだと毎回パスワードを聞かれます。ssh-agentを使うとキーの暗号化が解除され、キャッシュされます。するとパスフレーズなしに接続できるようになります。

ssh-agentを起動します。

$eval `ssh-agent`

ssh-add で秘密鍵を指定して実行します。
パスワードが効かれるので、ssh-keygen時に指定したパスワードを入力します。

$ssh-add ~/.ssh/id_pub
Enter passphrase for /Users/mistat/.ssh/id_rsa: 
Identity added: /Users/mistat/.ssh/id_rsa (/Users/mistat/.ssh/id_rsa)

これで秘密鍵の暗号化が解除され、パスなしで接続できるようになります。