このトピックでは、SSH クライアントから Linux Elastic Compute Service (ECS) インスタンスに接続するときに "Permission denied, please try again" というエラーメッセージが表示される問題の原因と解決策について説明します。
問題の説明
オンプレミスの SSH クライアントを使用して Linux シンプルアプリケーションサーバーにログオンしようとすると、正しいパスワードを入力しても、次のようなエラーメッセージが表示されます。
Permission denied, please try again.
SSH サーバーがパスワードを拒否しました。もう一度お試しください。
原因
上記のの問題は、次の理由によって発生する可能性があります。
シンプルアプリケーションサーバーで root ユーザーによるログオンを拒否する: SSH サービスの
/etc/ssh/sshd_config
設定ファイルのPermitRootLogin
またはPasswordAuthentication
パラメーターがno
に設定されています。この問題の解決方法については、root ユーザーによるログオンの拒否 を参照してください。PermitRootLogin
がno
に設定されている場合、root ユーザーによるログオンは拒否されます。PasswordAuthentication
がno
に設定されている場合、パスワードベースのログオンは拒否されますが、キーベースのログオンは許可されます。
サーバーで SELinux サービスが有効になっている: サーバーで SELinux が有効になっている場合、root ユーザーまたは通常のユーザーとしてサーバーに接続しようとすると、エラーが報告される場合があります。
cat /var/log/secure
コマンドを実行して、セキュアログをクエリします。ログにerror: Could not get shadow information for root.
が含まれている場合、SELinux が有効になっています。この問題の解決方法については、SELinux の無効化 を参照してください。
原因 1 による問題の解決策
レスキュー機能を使用してシンプルアプリケーションサーバーに接続します。詳細については、レスキュー機能を使用して Linux サーバーに接続する を参照してください。
/etc/ssh/sshd_config
ファイルのPermitRootLogin
またはPasswordAuthentication
パラメーターの値を確認します。cat /etc/ssh/sshd_config
次の図に示すコマンド出力が返されます。コマンド出力では、
PermitRootLogin
パラメーターとPasswordAuthentication
パラメーターがno
に設定されています。これは、root ユーザーによるログオンとパスワードベースのログオンが拒否されていることを示します。ビジネス要件に基づいて、
PermitRootLogin
パラメーターとPasswordAuthentication
パラメーターの値を変更します。SSH 設定ファイルを開きます。
vi /etc/ssh/sshd_config
PermitRootLogin
パラメーターとPasswordAuthentication
パラメーターの値を変更します。root ユーザーによるログオンを許可するには、
PermitRootLogin
パラメーターをyes
に設定します。パスワードベースのログオンを許可するには、
PasswordAuthentication
パラメーターをyes
に設定します。
Esc キーを押し、
:wq
と入力して変更を保存します。
次のコマンドを実行して、SSH サービスを再起動します。
systemctl restart sshd.service
原因 2 による問題の解決策
ビジネス要件に基づいて、SELinux を一時的または永続的に無効にして、問題を解決できます。
SELinux のステータスを確認します。
レスキュー機能を使用してシンプルアプリケーションサーバーに接続します。詳細については、レスキュー機能を使用して Linux サーバーに接続する を参照してください。
次のコマンドを実行して、SELinux のステータスを表示します。
/usr/sbin/sestatus -v
出力例:
SELinux status: enabled
説明有効な値:
enabled: SELinux が有効です。
disabled: SELinux が無効です。
SELinux を無効にします。
SELinux を一時的に無効にする
次のコマンドを実行して、SELinux を一時的に無効にします。
setenforce 0
SELinux を永続的に無効にする
次のコマンドを実行して、SELinux を永続的に無効にします。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
説明上記ののコマンドは、SELinux が
enforcing
状態の場合にのみ使用できます。設定を有効にするには、サーバーを再起動します。詳細については、サーバー情報の表示 を参照してください。