ssh接続でPermission deniedと表示されたときの対処法

2018.12.26

はじめに

サーバに SSH 接続しようとしたときに、「Permission denied」と表示された場合の対処法を紹介します。

.ssh ディレクトリの権限

/home/ユーザ/.ssh ディレクトリの権限を確認します。
下記のコマンドで.ssh ディレクトリの権限を確認できます。

$ ls -al ~/

.ssh ディレクトリは権限が 700 になっている必要があります。
実行した結果、ファイルのリストが表示されます。
.ssh ディレクトリに関する情報が、下記のようになってれば大丈夫です。

drwx------  27 xxx   staff    864 12 20 10:43 .ssh

もし、下記のように違っている場合は、chmod コマンドを使って権限を変更する必要があります。

drwxr--r--  27 xxx   staff    864 12 20 10:43 .ssh

こんな風になっていたり、

drwxr-xr-x  27 xxx   staff    864 12 20 10:43 .ssh

下記のコマンドを実行すると権限を変更できます。

$ chmod 700 ~/.ssh/

秘密鍵の権限

.ssh ディレクトリと同様に秘密鍵の権限が正しく設定されていない場合も、「Permission denied」となります。
秘密鍵の権限確認方法は下記のコマンドを実行すると確認できます。

$ ls -al ~/.ssh/id_rsa

※id_rsa が秘密鍵のファイルです。ファイル名を変更している場合は変更したファイル名を指定してコマンドを実行してください。

秘密鍵の権限が 600 か 400 になっている必要があります。
下記のように 600 になっているか、

-rw-------  1 xxx  staff  1823 12  6 18:15 /Users/xxx/.ssh/id_rsa

下記のように 400 になっていれば大丈夫です。

-r--------  1 xxx  staff  1823 12  6 18:15 /Users/xxx/.ssh/id_rsa

もし、なっていない場合は、下記のコマンドで権限を変更てください。

$ chmod 600 ~/.ssh/id_rsa

400 にしたい場合は下記のようになります。

$ chmod 400 ~/.ssh/id_rsa

権限を 600 にするか 400 にするかは、どちらでも構いません。600 の場合はファイルの所有者に読み取り、書き込み権限が付きます。
400 にした場合は、読み取り権限のみが付きます。

authorized_keys の権限

接続先の authorized_keys ファイルの権限について、600 になっている必要があります。
ローカル側の確認方法と同様に、下記のコマンドを実行して権限が 600、もしくは、400 になっているか確認してください。

$ ls -al ~/.ssh/authorized_keys

600、もしくは、400 になっていない場合は、下記のコマンドで権限を変更してください。

# 600 にしたい場合
$ chmod 600 ~/.ssh/authorized_keys

# 400 にしたい場合
$ chmod 400 ~/.ssh/authorized_keys

関連記事