渡邊です。
EC2インスタンスへのSSH接続における、鍵が拒否されるエラーの解決法を下記ページで拝見しました。今回はこれについて検証しました。
「Server refused our key」のエラーが発生した場合、Amazon EC2インスタンスにどのようにログインできますか?
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-server-refused-our-key/?nc1=h_ls
検証の流れ
今回は次のような流れで検証します。
[1] EC2インスタンス作成
[2] SSHログイン出来ない状態を作る
[3] ユーザーデータ入力
[4] SSHログイン確認
EC2インスタンス作成
EC2インスタンスを作成します。今回はAmazon LinuxのAMIを使用します。
SSHログイン出来ない状態を作る
作成したEC2インスタンスにSSHログインします。
今回の検証では、『ホームディレクトリ/.ssh』配下の『authorized_keys』ファイルを任意の名前にリネームします(ここでは『authorized_keys.1』とします)。
リネーム出来たらログアウトします。
1 2 3 4 5 6 7 8 9 |
$ cd .ssh $ ls -lh total 4.0K -rw------- 1 ec2-user ec2-user 392 XXX XX XX:XX authorized_keys $ mv authorized_keys authorized_keys.1 $ ls -lh total 4.0K -rw------- 1 ec2-user ec2-user 392 XXX XX XX:XX authorized_keys.1 $ exit |
再度SSHログインしようとするとエラーで失敗します。
その際は次のように表示されます。
[RLoginの場合]
[PuTTYの場合]
ユーザーデータ入力
ここから、再びSSHログイン出来るようにします。
まず、EC2インスタンスを停止します。
PuTTYGenで鍵ファイルを読み込みます(下図)。
『OpenSSHのauthorized_keysファイルにペーストするための公開鍵』欄に表示される文字列(公開鍵)を控えておきます。但し、末尾のコメント『imported-openssh-key』は不要です。
EC2インスタンスの『ユーザーデータの表示/変更』を選択します。
ユーザーデータに下記内容を入力します。[公開鍵]の部分に先程控えた公開鍵を入力します。
1 2 3 4 5 6 |
#cloud-config ssh_deletekeys: false ssh_authorized_keys: - ssh-rsa [公開鍵] cloud_final_modules: - [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についても今後勉強していく必要を感じました。
最後までご覧頂きありがとうございました。