このトピックでは、SSH クライアントで Linux Elastic Compute Service (ECS) インスタンスに接続する際に発生する「Maximum amount of failed attempts was reached」エラーの原因と解決策について説明します。
問題の説明
SSH クライアントを使用して Linux ECS インスタンスに接続すると、「Maximum amount of failed attempts was reached」というエラーメッセージが表示されます。
原因
この問題は、パスワードの試行が連続して複数回失敗したことにより、システムのプラガブル認証モジュール (PAM) のセキュリティポリシーがトリガーされることが原因です。このポリシーによりユーザーアカウントがロックされ、ECS インスタンスへのリモート接続ができなくなります。
Linux では、主に以下の 3 つの PAM 設定ファイルが SSH に関連しています。PAM 認証がリモート接続を制限するように設定されている場合、たとえば、auth required pam_tally2.so deny=3 unlock_time=50 の設定では、一般ユーザーによるログイン試行が 3 回連続で失敗すると、アカウントは 50 秒間ロックされます。
-
/etc/pam.d/login:VNC の PAM 設定ファイル。 -
/etc/pam.d/sshd:SSH サービスの PAM 設定ファイル。 -
/etc/pam.d/system-auth:システム全体の PAM 設定ファイル。
解決策
root ユーザーがロックされているかどうかに基づいて解決策を選択してください。
root ユーザーがロックされていない場合
このセクションでは、システム全体の PAM 設定ファイル (/etc/pam.d/system-auth) で PAM の制限をコメントアウトする方法を説明します。同様の方法が /etc/pam.d/sshd または /etc/pam.d/login にも適用されます。
-
VNC を使用して root ユーザーとしてインスタンスに接続します。
詳細については、「パスワードを使用して Linux インスタンスにログイン」をご参照ください。
-
次のコマンドを実行して、PAM 設定ファイルの認証制限を確認します。
cat /etc/pam.d/system-authたとえば、次の出力は、一般ユーザーが 3 回連続で誤ったパスワードを入力すると、アカウントが 50 秒間ロックされることを示しています。
auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular auth sufficient pam_sss.so forward_pass auth required pam_deny.so auth required pam_tally2.so deny=3 unlock_time=50 account required pam_unix.so no_pass_expiry account sufficient pam_localuser.so account sufficient pam_usertype.so issystem account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so -
system-auth 設定ファイルを変更します。
-
次のコマンドを実行して、system-auth 設定ファイルを開きます。
vim /etc/pam.d/system-auth -
iキーを押して挿入モードに入ります。 -
必要に応じて、設定をコメントアウト、変更、または削除します。
この例では、設定をコメントアウトします。
auth required pam_tally2.so deny=3 unlock_time=50 # 元の行:ログイン試行が3回連続で失敗すると、ユーザーアカウントをロックします。アカウントは 50 秒後にロック解除されます。 #auth required pam_tally2.so deny=3 unlock_time=50 # コメントアウト後説明-
この例では、
pam_tally2モジュールを使用しています。pam_tally2がサポートされていない場合は、pam_tallyモジュールを使用できます。設定は PAM のバージョンによって異なる場合があります。具体的な使用方法については、関連モジュールのドキュメントをご参照ください。詳細については、「Linux PAM SAG」をご参照ください。 -
pam_tally2モジュールとpam_tallyモジュールはどちらもアカウントロックアウトポリシーの制御に使用できますが、pam_tally2は指定した時間経過後の自動ロック解除をサポートしています。 -
even_deny_rootは root ユーザーを制限します。 -
denyは、ユーザーアカウントがロックされるまでの、連続したログイン失敗試行の最大回数を設定します。 -
unlock_timeは、ロックされた一般ユーザーアカウントの自動ロック解除時間を秒単位で設定します。 -
root_unlock_timeは、ロックされた root ユーザーアカウントの自動ロック解除時間を秒単位で設定します。
-
-
-
インスタンスへの再接続を試みてください。接続に成功すれば、問題は解決です。
root ユーザーがロックされている場合
-
シングルユーザーモードでインスタンスに接続します。
詳細については、「Linux インスタンスでシングルユーザーモードに入る」をご参照ください。
-
次のコマンドを実行して、root ユーザーをロック解除します。
pam_tally2 -u root # root ユーザーの連続したログイン試行の失敗回数を確認します。 pam_tally2 -u root -r # root ユーザーの連続したログイン試行の失敗回数をクリアします。 authconfig --disableldap --update # PAM セキュリティ認証レコードを更新します。 -
インスタンスを再起動します。
詳細については、「インスタンスの再起動」をご参照ください。
-
関連する PAM 設定ファイルで、対応する設定をコメントアウト、変更、または削除します。
詳細な手順については、「root ユーザーがロックされていない場合」をご参照ください。
-
インスタンスへの再接続を試みてください。接続に成功すれば、問題は解決です。