問題の説明
リモートログインの失敗: PuTTY、XShell、SecureCRT などのサードパーティの Secure Shell (SSH) クライアントを使用して Linux インスタンスに接続すると、接続が
Access deniedまたはPermission denied, please try again.エラーで失敗します。システムセキュリティログ: システムログファイル
/var/log/secureには、not allowed becauseなどのメッセージが含まれています。
原因
デフォルトでは、Linux インスタンスの SSH サービスでは、どのシステムユーザーでも自身の認証情報 (パスワードまたはキー) を使用してログインできます。SSH サービス構成ファイル /etc/ssh/sshd_config でログイン制限ポリシーが有効になっている場合、構成が正しくないと、特定のユーザーがインスタンスにログインできなくなる可能性があります。
AllowUsers: ユーザーのホワイトリスト。リスト内のユーザーのみがログインできます。
DenyUsers: ユーザーのブラックリスト。リスト内のユーザーはログインアクセスを拒否されます。
AllowGroups: ユーザーグループのホワイトリスト。リストされたグループ内のユーザーのみがログインできます。
DenyGroups: ユーザーグループのブラックリスト。リストされたグループ内のユーザーはログインアクセスを拒否されます。
拒否ポリシー (Deny*) は、許可ポリシー (Allow*) よりも優先度が高くなります。ユーザーが許可ポリシーと拒否ポリシーの両方に一致する場合、アクセスは拒否されます。
解決策
VNC 接続を使用して ECS インスタンスにログインします。
ECS コンソール - インスタンスに移動します。上部のナビゲーションバーで、ターゲットリージョンとリソースグループを選択します。
ターゲットインスタンスの詳細ページに移動します。[接続] をクリックし、[VNC] を選択します。ユーザー名とパスワードを入力して ECS インスタンスにログインします。
SSH 構成ファイルを確認して変更します。
エラーが発生した場合に復元できるように、構成ファイルをバックアップします。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakアクセスの制御ポリシーを見つけて調整します。
sudo vi /etc/ssh/sshd_config次のいずれかの方法でファイルを変更します。
方法 1: すべての制限ルールをコメントアウトする
ログイン制限を削除するには、各行の先頭に
#記号を追加して、AllowUsers、DenyUsers、AllowGroups、およびDenyGroupsパラメーターをコメントアウトします。これにより、すべてのシステムユーザーがログインできるようになります。# AllowUsers userA userB # DenyUsers userC方法 2: 制限ルールを修正する
ポリシーが曖昧にならないように、ホワイトリスト (
Allow*) ルールとブラックリスト (Deny*) ルールを同時に使用しないでください。ホワイトリストポリシーを使用する (特定の少数のユーザーのみにログインを許可するシナリオの場合)
AllowUsersまたはAllowGroupsパラメーターのみを保持します。ログインアクセスが必要なユーザーまたはユーザーグループをリストに追加します。次に、すべてのDeny*パラメーターをコメントアウトまたは削除します。AllowUsers userA userB newUser # DenyUsers userCこの例では、ユーザー
userA、userB、およびnewUserのみがログインでき、他のすべてのユーザーのアクセスは拒否されます。ブラックリストポリシーを使用する (特定の少数のユーザーのログインアクセスを拒否する必要があるシナリオの場合)
DenyUsersまたはDenyGroupsパラメーターのみを保持します。ブロックしたいユーザーまたはユーザーグループをリストに追加します。次に、すべてのAllow*パラメーターをコメントアウトまたは削除します。# AllowUsers userA userB DenyUsers userC userDこの例では、ユーザー
userCとuserDのアクセスを拒否し、他のすべてのユーザーのログインを許可します。
SSH サービスを再起動して、新しい構成を適用します。
sudo systemctl restart sshd.serviceサービスが起動に失敗した場合は、
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_configコマンドを実行して、バックアップから構成ファイルを復元します。サードパーティの SSH クライアントでインスタンスに再度ログインし、問題が解決されたことを確認します。