「Server refused our key」のエラー解決法を検証してみた

EC2インスタンスを作成します。今回はAmazon LinuxのAMIを使用します。

SSHログイン出来ない状態を作る

作成したEC2インスタンスにSSHログインします。

今回の検証では、『ホームディレクトリ/.ssh』配下の『authorizedkeys』ファイルを任意の名前にリネームします(ここでは『authorizedkeys.1』とします)。

リネーム出来たらログアウトします。

1$ cd .ssh2$ ls -lh3total 4.0K4-rw------- 1 ec2-user ec2-user 392 XXX XX XX:XX authorized_keys5$ mv authorized_keys authorized_keys.16$ ls -lh7total 4.0K8-rw------- 1 ec2-user ec2-user 392 XXX XX XX:XX authorized_keys.19$ exit

再度SSHログインしようとするとエラーで失敗します。

その際は次のように表示されます。

[RLoginの場合]

[PuTTYの場合]

[PuTTYの場合]

ユーザーデータ入力

ここから、再びSSHログイン出来るようにします。

まず、EC2インスタンスを停止します。

PuTTYGenで鍵ファイルを読み込みます(下図)。

PuTTYGenで鍵ファイルを読み込みます(下図)。

『OpenSSHのauthorized_keysファイルにペーストするための公開鍵』欄に表示される文字列(公開鍵)を控えておきます。但し、末尾のコメント『imported-openssh-key』は不要です。

EC2インスタンスの『ユーザーデータの表示/変更』を選択します。

ユーザーデータに下記内容を入力します。[公開鍵]の部分に先程控えた公開鍵を入力します。

1#cloud-config2ssh_deletekeys: false3ssh_authorized_keys:4  - ssh-rsa [公開鍵]5cloud_final_modules:6  - [ssh, always]

EC2インスタンスを開始します。

SSHログイン確認

再度SSHログインを試みると、成功することが確認出来ます。

参考リンク

「Server refused our key」のエラーが発生した場合、Amazon EC2インスタンスにどのようにログインできますか?

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-server-refused-our-key/?nc1=h_ls

Configure ssh and ssh keys

http://cloudinit.readthedocs.io/en/latest/topics/modules.html#ssh

おわりに

以上、EC2インスタンスへのSSH接続における、鍵が拒否されるエラーの解決法を検証しました。

この方法はcloud-initのインストールと設定が前提(Amazon Linux AMIにはインストール及び設定済み)となりますので、cloud-initについても今後勉強していく必要を感じました。

最後までご覧頂きありがとうございました。

この記事を書いた人

aws-recipe-user