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の場合]
ユーザーデータ入力
ここから、再びSSHログイン出来るようにします。
まず、EC2インスタンスを停止します。
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についても今後勉強していく必要を感じました。
最後までご覧頂きありがとうございました。