ssh ではパスワード認証方式ではなく、公開鍵認証方式を利用することでパスワード入力を省略することが出来ます。
クライアント側の設定(ssh する側の設定)
"ssh-keygen" で秘密鍵と公開鍵を生成します。"-t rsa" オプションを指定することで RSA 暗号化方式になります。デフォルトでは ~/.ssh ディレクトリに秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が出来ます。このうち、公開鍵のみ、サーバ側へコピーします。通常であればネットワーク経由ではなく、メディア等でコピーしますが、今回は便宜的に scp コピーしています。
[user@client ~]$ cd
[user@client ~]$ ssh-keygen -t rsa
[user@client ~]$ scp .ssh/id_rsa.pub server:~
サーバ側の設定(ssh される側の設定)
CentOS 5.5 のデフォルト設定では /etc/ssh/sshd_config 中、以下の箇所がコメントアウトされていました。
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
コメントアウトを外し、「RSA 暗号化方式による認証」「公開鍵認証」を有効化します。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
修正が終わったら sshd を再起動し、変更した設定を反映しておきます。
$ sudo /etc/init.d/sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
次にクライアント側から scp コピーした公開鍵を ~/.ssh/authorized_keys に追記しておきます。また、デフォルトの設定では ~/.ssh ディレクトリと ~/.ssh/authorized_keys を適切な権限にしておく必要があります。
[user@server ~]$ cd
[user@server ~]$ cat ~/id_rsa.pub >> .ssh/authorized_keys
[user@server ~]$ chmod 700 .ssh
[user@server ~]$ chmod 600 .ssh/authorized_keys
通信確認
以上の設定で、公開鍵認証方式によりサーバへログイン出来ることを確認します。
[user@client ~]$ ssh 192.168.1.201
Last login: Sun Oct 31 20:22:01 2010 from 192.168.1.24
[user@server ~]$
「Permission denied (publickey,gssapi-with-mic).」エラーが出る場合は
サーバへ ssh すると以下のようなエラーが出る場合があります。
[user@client ~]$ ssh 192.168.1.201
Permission denied (publickey,gssapi-with-mic).
こういった場合はサーバ側の ~/.ssh ディレクトリと ~/.ssh/authorized_keys ファイルのアクセス権限に問題がある可能性があります。例えば以下のような権限変更を行ないます。
[user@server ~]$ chmod 700 .ssh
[user@server ~]$ chmod 600 .ssh/authorized_keys
コメント