Skip to content

ssh で公開鍵認証方式を利用するには

ssh ではパスワード認証方式ではなく、公開鍵認証方式を利用することでパスワード入力を省略することが出来ます。

file

クライアント側の設定(ssh する側の設定)

"ssh-keygen" で秘密鍵と公開鍵を生成します。"-t rsa" オプションを指定することで RSA 暗号化方式になります。デフォルトでは ~/.ssh ディレクトリに秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が出来ます。このうち、公開鍵のみ、サーバ側へコピーします。通常であればネットワーク経由ではなく、メディア等でコピーしますが、今回は便宜的に scp コピーしています。

1
2
3
[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 中、以下の箇所がコメントアウトされていました。

1
2
3
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys

コメントアウトを外し、「RSA 暗号化方式による認証」「公開鍵認証」を有効化します。

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

修正が終わったら sshd を再起動し、変更した設定を反映しておきます。

1
2
3
$ sudo /etc/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

次にクライアント側から scp コピーした公開鍵を ~/.ssh/authorized_keys に追記しておきます。また、デフォルトの設定では ~/.ssh ディレクトリと ~/.ssh/authorized_keys を適切な権限にしておく必要があります。

1
2
3
4
[user@server ~]$ cd
[user@server ~]$ cat ~/id_rsa.pub >> .ssh/authorized_keys
[user@server ~]$ chmod 700 .ssh
[user@server ~]$ chmod 600 .ssh/authorized_keys

通信確認

以上の設定で、公開鍵認証方式によりサーバへログイン出来ることを確認します。

1
2
3
[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 すると以下のようなエラーが出る場合があります。

1
2
[user@client ~]$ ssh 192.168.1.201
Permission denied (publickey,gssapi-with-mic).

こういった場合はサーバ側の ~/.ssh ディレクトリと ~/.ssh/authorized_keys ファイルのアクセス権限に問題がある可能性があります。例えば以下のような権限変更を行ないます。

1
2
[user@server ~]$ chmod 700 .ssh
[user@server ~]$ chmod 600 .ssh/authorized_keys