问题现象
通过SSH远程连接Linux实例时,即使输入正确的用户名和密码,连接请求仍被服务端拒绝,返回Permission denied, please try again。
问题诊断
通过VNC连接登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。
检查SSH服务配置。
若配置中的
PermitRootLogin或PasswordAuthentication参数被设置为no,请参考场景一:SSH配置禁止登录进行修复。PermitRootLogin:若设置为no,则禁止root用户通过SSH登录。PasswordAuthentication:若设置为no,则禁止所有用户使用密码方式登录。
sudo cat /etc/ssh/sshd_config检查系统安全日志。
SELinux策略阻止登录时,会在系统安全日志中记录错误信息。
SELinux策略是一套强制访问控制规则,它定义了系统中每个进程允许对哪些文件、端口或其他资源执行哪些具体操作。
# 对于CentOS/RHEL系统 sudo grep -iE --color=auto 'Could not get shadow information' /var/log/secure # 对于Debian/Ubuntu系统 sudo grep -iE --color=auto 'Could not get shadow information' /var/log/auth.log若无返回信息,则表明问题可能由SELinux策略引起,请参考场景二:SELinux策略阻止登录进行修复。
问题修复
场景一:SSH配置禁止登录
修改配置
sudo vi /etc/ssh/sshd_config根据业务需求调整参数:
允许密码认证:将
PasswordAuthentication no修改为PasswordAuthentication yes。允许root用户登录:
允许密钥认证(推荐):若计划使用密钥登录root账号,可设置为
PermitRootLogin prohibit-password。允许密码认证:将
PermitRootLogin no修改为PermitRootLogin yes。重要修改SSH配置以允许root用户通过密码登录(
PermitRootLogin yes)会使实例面临更高的暴力破解攻击风险。建议优先考虑使用密钥认证或限制IP访问来源。
修改完成后,按
Esc键,输入:wq保存并退出文本编辑器。检查配置并重启服务
检查配置文件语法是否正确。若未返回任何错误,表示语法正确。
sudo sshd -t重载服务使配置生效。
sudo systemctl restart sshd
验证连接
再次通过SSH远程连接实例,验证是否可以连接成功。
场景二:SELinux策略阻止登录
检查SELinux当前状态
确认SELinux是否处于
enforcing(强制)模式。sudo sestatus若回执信息中的
SELinux status为enabled且Current mode为enforcing,则表明SELinux策略正在生效。临时调整SELinux模式以恢复访问
将SELinux临时切换到
permissive(宽容)模式,SELinux只记录警告而不强制阻止操作。sudo setenforce 0重要该命令仅临时调整状态,重启失效。
执行后,通过SSH重新登录。如果登录成功,则证明问题由SELinux引起。
永久修改SELinux配置(可选)
修改配置文件:将SELinux的默认模式从
enforcing修改为permissive。sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config重启实例:使配置文件修改生效。
验证连接
再次通过SSH远程连接实例,验证是否可以连接成功。