#事象
SSHにてサーバに秘密鍵ファイルを用いてリモート接続しようとすると、下記エラーが出力される。
エラーメッセージ
[ec2-user@ip-10-0-0-187 tmp]$ ssh -i test-keypair.pem ec2-user@10.0.2.79
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'test-keypair.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "test-keypair.pem": bad permissions
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
エラーの内容を読んでみると、パーミッションが「0644」となっており、同じグループや他ユーザーから秘密鍵ファイルの読み込みができてしまうため、セキュリティ上問題があると言っているようだ。
#解決方法
パーミッションを確認
[ec2-user@ip-10-0-0-187 tmp]$ ls -l test-keypair.pem
-rw-r--r-- 1 ec2-user ec2-user 1704 Nov 27 08:42 test-keypair.pem
上記のように「0644」となっている。
ここで、秘密鍵ファイルのパーミッションを「0400(自分のみ読み取り可能)」に変更してみる。
[ec2-user@ip-10-0-0-187 tmp]$chmod 400 test-keypair.pem
[ec2-user@ip-10-0-0-187 tmp]$ls -l test-keypair.pem
-r-------- 1 ec2-user ec2-user 1704 Nov 27 08:42 test-keypair.pem
再実行すると、ちゃんと繋がるようになりました。
[ec2-user@ip-10-0-0-187 tmp]$ ssh -i test-keypair.pem ec2-user@10.0.2.79
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-2-79 ~]$
#終わりに
自分に読み取り権限が無ければ接続できないのは勿論ですが、グループや他ユーザーに読み取り権限がある場合でも接続できないんですね。