久々に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のインスタンスにアクセスしたら、無事ログイン出来た。
以前は、なぜこのような問題が発生しなかったのか謎だ。しかし、私と同じ環境の人は、鍵ファイルのグループのアクセス権限に気をつけた方がよい、かもしれない。
コメント
コメントを投稿