まずは公式ドキュメント案内。記事は陳腐化するが公式ドキュメントはメンテナンスされることを期待する。
記事概要
EC2 インスタンスを立てて ssh でログインして操作することが多い。
実験的に ssh とかファイアウォールとかの設定を変えているとうっかり ssh で入れなくしてしまうことがある。
対処して ssh ログインできるようになったので、対処した方法を記録する。
対処
以下の流れで記録する
- 問題
- 対処方法調査
- 実際の対処
- 感想など
問題
グループ設定がちがう xxx さんをマシンにアクセスできるようにするために、 /etc/ssh/sshd_config に以下のような変更をしてしまった。
AllowGroups ssh-users
↓
AllowUsers xxx
AllowGroups ssh-users
変更前はグループが ssh-users の人のアクセスを許可するもの。
変更後は xxx さんでかつ グループが ssh-users の人のアクセスを許可するもの。OR 条件だと思って設定したら AND 条件だった。
xxx さんでかつ グループが ssh-users の人はいないのでだれもログインできなくなってしまった。
対処方法調査
公式ドキュメントで具体的な案内がいくつかある。
この中の「方法 4: ユーザーデータスクリプトを使用して SSH アクセス許可を修復し、正しい SSH パブリックキーを authorized_keys ファイルに追加する」を参考にしました。
ユーザーデータスクリプトとは、インスタンスの起動/再起動時に任意のスクリプトを走らせることができるものです。スクリプトは強力な権限を持つユーザで実行されます。
今回は SSH アクセス許可をミスしてしまっただけなので「ユーザーデータスクリプトを使用して SSH アクセス許可を修復する」部分だけを利用します。
実際の対処
ユーザーデータスクリプトの設定方法は公式ドキュメントを参照してください。
今回のケースである「SSH アクセス許可を修復する」スクリプト部分は1行でした。
sshd_config から AllowUsers を含む行を削除するのみです。
sed '/^AllowUsers/d' -i /etc/ssh/sshd_config
停止->再起動したら元の通りグループが ssh-users の人のアクセスができるようになりました。
ユーザーデータスクリプトは、インスタンスを再起動するたびに実行されるように設定されています。インスタンスにアクセスできるようになったので、ユーザーデータスクリプトを削除した。
感想など
ユーザデータスクリプト、トラブルシューティングに利用できること経験になりました。
この方法はインスタンスの再起動をしています。再起動によってサービスの停止やIPアドレス変更が発生することは考慮する必要があります。