Permission denied でssh接続ができない時の解決方法

ssh接続を利用してサーバーにアクセスしようとした時、「Permission denied」(アクセス拒否)でアクセスできない時はありませんでしょうか?

本日はそんなssh接続で「Permission denied 」でアクセスできない時の解決方法を紹介します。

.sshディレクトリの権限

.sshディレクトリはユーザー直下の隠しディレクトリとして存在することが一般的です。

/home/<ユーザー>/.ssh

以下ではユーザー名がtomというユーザーの場合の構造になります。

tom@mbp .ssh % pwd
/home/tom/.ssh

そして.sshディレクトリは権限が700になっている必要があります。

権限は、ls -al コマンドで確認できます。

tom@mbp ~ % ls -al
drwx------    5 tom  staff    160 12 23 10:16 .ssh/

drwx—— を見ての通り権限が700になっていることを確認できました。

ちなみに自分で作成したばかりだと権限は700になっていません。

tom@mbp ~ % mkdir sample_dir
tom@mbp ~ % ls -al | grep sample_dir 
drwxr-xr-x    2 tom  staff     64  1 15 13:46 sample_dir/

.sshディレクトリを作成した時は必ず権限を700に設定しておきましょう。

以下のchmodコマンドで更新ができます。


tom@mbp ~ % chmod 700 ./sample_dir 
tom@mbp ~ % ls -al | grep sample_dir
drwx------    2 tom  staff     64  1 15 13:46 sample_dir/

秘密鍵の権限

先に紹介した.sshディレクトリの権限と同様にsshアクセスするための秘密鍵の権限も、600か400に設定をしておく必要があります。

以下は権限が600の場合です。

tom@mbp .ssh % ls -al
-rw-------@  1 tom  staff  1678  1 15  2022 id_rsa

以下は権限が400の場合です。

tom@mbp .ssh % ls -al
-r--------@  1 tom  staff  1678  1 15  2022 id_rsa

これらもchmodコマンドを使用して権限を更新しておきましょう。

tom@mbp ~ % chmod 700 ./id_rsa 

ファイル所有者

秘密鍵を利用してssh接続する場合の id_rsa の所有者も確認しておきましょう。

以下はユーザー tom でssh接続を試みていますが id_rsa ファイルの所有者はjackとなっています。

tom@mbp .ssh % ls -al
-r--------@  1 jack  jack  1678  1 15  2022 id_rsa

chown コマンドを使用して所有者を変更します。

tom@mbp .ssh % chown tom:tom id_rsa
tom@mbp .ssh % ls -al
-r--------@  1 tom  tom  1678  1 15  2022 id_rsa

接続先にauthorized_keysの設置

authorized_keysの権限

接続先にauthorized_keysファイルを作成し、authorized_keys ファイルの権限が600か400に設定をしておく必要があります。

$ ls -al
-rw------- 1 tom tom  382  1月 16  2022 authorized_keys

authorized_keysの中身

authorized_keys の中身もきちんと設定しておきます。

aws で新規EC2インスタンスを作成した場合は ec2-user 直下に authorized_keys ファイルおよび中身も生成されていますが、そうじゃない場合は自前で用意します。

中身は秘密鍵を ssh-keygen コマンドを実行してコピペして貼り付けます。

ssh-keygen -y -f id_rsa で出力した内容を authorized_keys に貼り付けます。

tom@mbp .ssh % ssh-keygen -y -f id_rsa 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCWEZsoW8SL9maSZIizNgVPOnVXQLeCyzsLnmeTVM8EhoCwxMXNdMBeCa1oIgyUJrky2KXXXOxmBcXwk2ed75+XrJE1LKRehDv9nNvjSzYpV7cGq/Z4lj7SEvZc+xKxPFmbptrmTostfrnsxwuEcTQz86EuCXgDieqyaRDvaVTvK+OtEEcxK9JUkqasd4ueL9qw0OTjra5oEuMxG+87Uks5S2L54EAGb1s4PQwIZAd73j3Qj/b+BXMtryray5jDRyMCzZruhwQVrJ9jN+vW5yEKNWltZF9yFFQ2oPdM75i0uleRfRpgZw7o6xmmFW7lthR3hnbRy9U5o2eA2oJEG8fdnb

最後に

いかがでしたでしょうか。

以上が「Permission denied でssh接続ができない時の解決方法」の紹介記事になります。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です