Amazon Linux2等でsshd_configのパスワード認証を有効化した後、AMI→EC2化をしたら、パスワード認証が出来なくなっていた。新EC2をよくよく調べると、sshd_configの該当行は「PasswordAuthentication no」になっていた。

cloud-initという初回起動時のみ動作する処理が書き換えているようです。今回はパスワード認証を無効化しないようにcloud-initの設定を変更していきます。
対処方法
cloud-initは「初回起動」時に初期設定を自動化してくれるソフトウェアパッケージです。このコンフィグファイルを変更することでsshd_configの内容は変わらなくなります。
sudo vi /etc/cloud/cloud.cfg
→ (変更前) ssh_pwauth: false
→ (変更後) ssh_pwauth: 1
この状態でAMIを作成して起動した場合、sshd_configは変更されず、引き続きパスワード認証でログイン出来るようになります。

(これを知るまでは、初回起動時に動作させるユーザーデータでsshd_configを書き換えてsshd_configを再起動してた・・・。早く存在を知れば良かった・・・。)
cloud-initは他にもいろいろな初期設定を実施してくれているようです。以下は公式サイトの情報です。起動時に指定するユーザーデータと組み合わせて、いい感じのEC2を初回起動時に作り上げたいものです。
Amazon Elastic Compute Cloud
まとめ
AMI作成前に「/etc/cloud/cloud.cfg」内の「ssh_pwauth」を「false」→「1」に変更しておくと、初回起動時のパスワード認証無効化を回避出来ます。cloud-initは他に便利に記述できる箇所があるので読んでおいて損はないと思いました。

最後までご覧いただき、ありがとうございました。
コメント