Featured image of post EC2にSSH接続時の「UNPROTECTED PRIVATE KEY FILE!」の解決方法

EC2にSSH接続時の「UNPROTECTED PRIVATE KEY FILE!」の解決方法

AWSのEC2にpemキーでSSH接続すると「WARNING: UNPROTECTED PRIVATE KEY FILE!」が出る原因は、鍵ファイルのパーミッションが0644で緩すぎるから。chmodで600に変更すれば接続できます。初心者が必ずハマる壁です♪

1126文字

初心者は必ずハマるであろう壁

EC2インスタンス作成時のキーペア

AWSでEC2インスタンスを新たに作成する際に、使用するキーペアを求められます。
キーペアを指定しなくても作成することは可能ですが、セキュリティ上危ないので必ず既存のキーペアを使う新たに作成するようにしましょう。

pemキーでのSSH時のエラー

このキーペアファイルですが、ブラウザからダウンロードしてそのまま使用すると以下のようなエラーが表示される事があります。

実行時エラー
ssh  -i ~/.ssh/sample.pem ec2-user@xx.xx.xx.xx
The authenticity of host 'xx.xx.xx.xx (xx.xx.xx.xx)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xx.xx.xx.xx' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/blogenist/.ssh/sample.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 "/Users/blogenist/.ssh/sample.pem": bad permissions
Permission denied (publickey).

おそらく、初めてEC2インスタンスにSSH接続しようとすると、ほとんどの方がこのエラーに巡り合っているのではないでしょうか。笑

原因

まずは、エラー内容を解析してみましょう。

ログ
WARNING: UNPROTECTED PRIVATE KEY FILE!

これは保護されていない秘密鍵ファイルだよ!という警告文ですね。
具体的な理由は以下です。

ログ
Permissions 0644 for '/Users/blogenist/.ssh/sample.pem' are too open.

/Users/blogenist/.ssh/sample.pemのパーミッションが0644なので緩すぎだよ!という意味となります。
0644とはファイルモードのことを指しており、このファイルの所有者以外にも見えてしまう設定となってしまっているのが警告の原因と思われます。
確かに、対象のファイルが644を表すrw-r--r--状態になってしまっていますね。

ファイルモード
ls -la ~/.ssh
total xxx
drwxr-xr-x   21 blogenist  staff    714  5 22 14:54 .
drwxr-xr-x+ 108 blogenist  staff   3672  5 23 14:48 ..
-rw-r--r--@   1 blogenist  staff   1692  5 22 14:53 sample.pem

では、原因が分かったところで対応してみましょう。

手順

ファイルモードを600に変更

結論を言うと、ファイルモードを所有者以外は読み取りを出来ないように変更すれば良いです。
以下のコマンドを実行してみましょう。

ファイルモード変更
chmod 600 ~/.ssh/{対象の秘密鍵キーペア}.pem

たったこれだけです。

確認

では確認をしてみましょう。
まずはファイルモードが変わっているか確認します。

ファイルモード
ls -la ~/.ssh
total xxx
drwxr-xr-x   21 blogenist  staff    714  5 22 14:54 .
drwxr-xr-x+ 108 blogenist  staff   3672  5 23 14:48 ..
-rw-------@   1 blogenist  staff   1692  5 22 14:53 sample.pem

正常に変わっていますね。
では、実際にSSH接続を試みてみましょう。

SSH接続
ssh  -i ~/.ssh/sample.pem ec2-user@xx.xx.xx.xx

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
6 package(s) needed for security, out of 7 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-yy-yy-yy-yy ~]$

無事にエラーが出ずにEC2インスタンスへのSSH接続が出来ましたね♪

終わりに

以上のように、頻繁に起こりやすいエラーですが、エラーの原因さえ分かれば簡単に対応する事が可能となっています。

お困りの方は是非この記事を参考にして対応を行ってみてください。