pgintro.net

公開鍵認証

作成日時: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