通过SSH客户端登录Linux实例时提示“Permission denied, please try again”错误怎么办?

本文介绍通过SSH客户端登录Linux实例时,提示“Permission denied, please try again”错误的解决方案。

问题描述

通过本地SSH客户端登录Linux系统的ECS实例时,即便输入了正确的密码,出现了类似如下的错误信息。

  • Permission denied, please try again.

  • SSH服务器拒绝了密码,请再试一次。

问题原因

导致该问题可能有以下原因:

  • ECS实例内禁用root用户登录:SSH服务对应配置文件/etc/ssh/sshd_config中的参数PermitRootLoginPasswordAuthentication被设置为no。您可以参考禁止root用户登录引起问题的解决方法解决。

    • PermitRootLogin设置为no,表示禁用使用root用户登录。

    • PasswordAuthentication设置为no,表示禁用使用密码方式登录,但是可以使用密钥方式登录。

  • Linux系统启用了SELinux服务,导致root用户和普通用户无法登录。

    执行cat /var/log/secure查看secure日志,若日志中包含error: Could not get shadow infromation for root.表示是启用了SELinux服务导致,您可以参考SELinux服务引起问题的解决方法解决。

禁止root用户登录引起问题的解决方法

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 查看/etc/ssh/sshd_config的参数PermitRootLoginPasswordAuthentication配置。

    cat /etc/ssh/sshd_config

    如下图所示,PermitRootLoginPasswordAuthentication参数设置为no,表示禁止root用户登录,也禁止以密码方式登录。

    image
  3. 根据业务需要,修改PermitRootLoginPasswordAuthentication参数配置。

    1. 打开SSH配置文件。

      vi /etc/ssh/sshd_config
    2. 修改PermitRootLoginPasswordAuthentication参数值配置。

      • 如果需要root用户登录,请将PermitRootLogin参数值设置为yes

      • 如果需要密码方式登录,请将PasswordAuthentication参数值设置为yes

        image
    3. 按Esc键,输入:wq保存修改。

  4. 执行如下命令,重启SSH服务。

    systemctl restart sshd.service

SELinux服务引起问题的解决方法

您可以根据实际情况,选择临时或永久关闭SELinux服务解决SSH连接异常问题。

检查SELinux服务状态

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,查看当前SELinux服务状态。

    /usr/sbin/sestatus -v 

    系统显示类似如下。

    SELinux status:       enabled
    说明

    SELinux status参数值说明如下:

    • enabled:SELinux服务处于开启状态。

    • disabled:SELinux服务处于关闭状态。

临时关闭SELinux服务

重要

临时关闭SELinux服务重启后会失效。

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,临时关闭SELinux。

    setenforce 0

永久关闭SELinux服务

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,永久关闭SELinux服务。

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    说明

    此命令只适用当前SELinux服务为enforcing状态时使用。

  3. 重启实例使设置生效,具体操作,请参见重启实例