Amazon EC2にsshでログインできない時の対処



久々にAmazon EC2のインスタンスにsshでアクセスしようとしたら、鍵ファイルのパーミッションがOpenすぎる、というエラーが返ってきて、ログイン出来なかった。正確には、"UNPROTECTED PRIVATE KEY FILE!"というエラーメッセージを頂戴した。このポストでは、その時の問題と解決方法を紹介する。

まず、環境の説明。
Windows 8.1 64 bit + Cygwin(64bit版)
Cygwinのコマンドが格納されたフォルダーにパスを設定済み
今回使用したsshは、Cygwinのsshコマンド。
Amazon EC2のインスタンスは、Ubuntu

ログインするために打ったコマンドは以下の通り。
ssh -i xxxxx.pem ubuntu@IPアドレス

しかし、以下のようなエラーメッセージが返ってきた。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0440 for 'xxxxx.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: xxxxx.pem
Permission denied (publickey). 

パーミッションがOpenになりすぎているため、指定した鍵が有効ではない、と言うことは分かる。
pemファイルは、パーミッションが400か600でないとダメらしいので、chmodコマンドにより、400になるように設定をした。

chmod 400 xxxxx.pem

ところが、これを行った後も、依然として上のエラーメッセージが出続ける。
そのため、以下のコマンドでxxxxx.pemのパーミッションを確認した。

ls -l xxxxx.pem

その結果、おかしなことに、以下のように表示された。

-r--r-----+ 1 nktener なし 1696 Aug 10 03:06 xxxxx.pem

400に設定したにもかかわらず、グループもr(読み込み)が許可されており、440になってしまっている。

そこで、正しく400に設定するための方法を探していたところ、以下のサイトが見つかり、解決した。



つまり、グループが正しく設定されていないと、400と設定したつもりでも440となるらしい。そこで、chownコマンドで、グループを設定し、再度パーミッションを400に設定した。

chown :Users xxxxx.pem
chmod 400 xxxxx.pem

これで、もう一度最初のsshコマンドでAmazon EC2のインスタンスにアクセスしたら、無事ログイン出来た。


以前は、なぜこのような問題が発生しなかったのか謎だ。しかし、私と同じ環境の人は、鍵ファイルのグループのアクセス権限に気をつけた方がよい、かもしれない。

コメント