公開鍵認証
作成日時:2018/04/01
更新日時:2018/05/30
はじめに
クライアント側がMac、Linuxの場合の公開鍵認証方式によるSSH接続の手順を記載します。
クライアント側がWindowsの場合は「Tera Term」の機能などを使用して鍵を作成します。
1.鍵ペア作成(クライアント側)
以下のコマンドで鍵を作成します。
「-t」オプションの引数に暗号方式を、「-b」オプションの引数に鍵長を指定できます。
ここではRSA暗号方式で鍵長は2048bitに指定しています。
$ ssh-keygen -t rsa -b 2048
鍵の名前を設定します。
入力せずに進むとカッコ内の「/Users/username/.ssh/id_rsa」の通りのディレクトリ、ファイル名で秘密鍵が作成され、末尾に「.pub」が付いた公開鍵ファイルも同様に作成されます。
Enter file in which to save the key (/Users/username/.ssh/id_rsa):
鍵のパスフレーズを設定(設定しないで進んでも作成は可能)
Enter passphrase (empty for no passphrase): Enter same passphrase again:
2.作成した鍵ペアのうち公開鍵をサーバーに送る(クライアント側)
公開鍵をサーバーに送る
「user」の部分を自身の接続サーバーのユーザ名に、「host」の部分をサーバーのホスト名に置き換えます
$ scp id_rsa.pub user@host:
3.クライアント側から送った公開鍵を設定(サーバー側)
クライアントから送られてきた公開鍵をauthorized_keysファイルに追加
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
4.接続確認(クライアント側)
「-i」オプションの引数に作成した秘密鍵を指定、「user」の部分を自身の接続サーバーのユーザ名に、「host」の部分をサーバーのホスト名に置き換えて接続を確認します。
$ ssh -i ~/id_rsa user@host
接続できない場合に確認する項目
sshで接続時にクライアント側に以下のエラーが表示され接続できない場合、サーバー側のパーミッションの設定を確認します。(「username」の部分は自身のサーバーのユーザ名に置き換え)
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
authorized_keysファイルのパーミッションは0600に設定する
# chmod 600 /home/username/.ssh/authorized_keys
.sshディレクトリのパーミッションは0700に設定する
# chmod 700 /home/username/.ssh
ホームディレクトリのパーミッションは0700に設定する
# chmod 700 /home/username
サーバーログの確認
「/etc/ssh/sshd_config」の「LogLevel」を「DEBUG」にしてSSHDを再起動後に再度クライアントから接続し、「/var/log/secure」の内容を確認します。
authorized_keysファイルへのアクセスが拒否された
debug1: Could not open authorized keys '/home/username/.ssh/authorized_keys': Permission denied
authorized_keysファイルが無い
debug1: Could not open authorized keys '/home/username/.ssh/authorized_keys': No such file or directory
対応する公開鍵が無い
Failed publickey for username from XXX.XXX.XXX.XXX port XXXXX ssh2