You need to enable JavaScript to run this app.
文档中心
云服务器

云服务器

复制全文
下载 pdf
SSH登录问题
SSH配置问题导致无法登录解决方案
复制全文
下载 pdf
SSH配置问题导致无法登录解决方案
本文主要介绍如何排查和解决,Linux实例由于SSH配置或者系统参数设置不合理导致的无法登录问题,包括SSH访问权限异常、SSH关键文件或目录丢失、SSH登录报错、实例中的服务进程未处于运行中等。​
前提条件​
如果您需对实例进行配置与数据修改,建议您先创建快照,以便提高容错能力,确保数据安全。​
SSH访问权限异常​
由于SSH的访问权限配置异常,比如访问权限配置不足,导致无法登录Linux实例时,您可以按照如下方式解决。​
  1. 单用户进入Linux操作系统,详情请参见进入单用户模式。​
  1. 执行以下命令,重置/var/empty/sshd目录的权限。​
  • ​
    chmod 711 /var/empty/sshd​
    ​
  1. 重启实例使设置生效。​
SSH关键文件或目录丢失​
由于SSH访问所需关键文件或目录丢失,即不存在sshd_config配置文件,导致无法登录Linux实例时,您可以按照如下方式解决。​
  1. 单用户进入Linux操作系统,详情请参见进入单用户模式。​
  1. 执行以下命令,检查是否存在sshd_config配置文件。​
  • ​
    ll /etc/ssh/sshd_config​
    ​
  1. (可选)如果存在sshd_config配置文件,跳过该步骤;如果不存在sshd_config文件,且您也无已备份的sshd_config.bak文件,请进行如下操作:​
  1. 执行以下命令重新安装openssh-server服务。​
  • Debian系统:sudo apt-get install --reinstall openssh-server​
  • CentOS系统:yum reinstall openssh-server​
  1. 重启实例使设置生效。​
SSH登录报错​
root用户通过本地SSH客户端登录Linux系统的ECS实例时,密码正确,但出现Permission denied, please try again错误信息,或“SSH服务器拒绝了密码,请再试一次”问题时,您可以按照如下方式解决。​
导致该问题原因可能是ECS实例内禁用root用户登录,或Linux系统启用了SELinux服务,导致root用户和普通用户无法登录。​
禁止root用户登录引起的问题​
  1. 登录目标实例,操作详情可参考登录Linux实例。​
  1. 执行以下命令,查看PermitRootLogin或PasswordAuthentication配置。​
  • ​
    cat /etc/ssh/sshd_config​
    ​
  1. 如果PermitRootLogin和PasswordAuthentication参数设置为no,表示禁止root用户登录,也禁止以密码方式登录,请继续以下操作。反之,请跳过本小节,在中排查并解决。​
  1. 修改PermitRootLogin和PasswordAuthentication参数配置。​
  1. 执行以下命令,打开SSH配置文件。​
  • ​
    vi /etc/ssh/sshd_config​
    ​
  1. 修改PermitRootLogin和PasswordAuthentication参数值配置。​
  • 如果需要root用户登录,请将PermitRootLogin参数值设置为yes。​
  • 如果需要密码方式登录,请将PasswordAuthentication参数值设置为yes。​
  1. 按“Esc”按键,输入:wq保存修改。​
  1. 执行如下命令,重启SSH服务后生效。​
  • ​
    systemctl restart sshd.service​
    ​
SELinux服务引起的问题​
您可以根据实际情况,选择临时或永久关闭SELinux服务解决SSH连接异常问题。​
步骤一:检查SELinux服务状态​
  1. 登录目标实例,操作详情可参考登录Linux实例。​
  1. 执行如下命令,查看当前SELinux服务状态。​
  • ​
    /usr/sbin/sestatus -v​
    ​
  1. 回显类似如下信息:​
  • ​
    SELinux status: enabled​
    ​
  • ​
    SELinux status: disabled​
    ​
  • enabled:SELinux服务处于开启状态。​
  • disabled:SELinux服务处于关闭状态。​
步骤二:关闭SELinux服务​
您可以根据实际情况临时关闭SELinux服务(重启后会失效)或永久关闭SELinux服务。​
  • 临时关闭SELinux服务​
  • 执行如下命令,临时关闭SELinux。​
  • ​
    setenforce 0​
    ​
  • 永久关闭SELinux服务:​
  1. 执行如下命令,永久关闭SELinux服务。​
  • ​
    vim /etc/selinux/config​
    ​
    SELINUX=disabled​
    ​
  1. 输入:wq保存。​
  1. 重启实例使设置生效。​
服务进程未处于运行中​
当服务进程未处于运行中(未处于监听状态)时,可能导致您无法访问Linux实例,您可以通过启动常见服务的方法解决该类问题,下文以CentOS 7系统为例说明。​
操作说明​
以下列举Linux实例中常见的服务以及对应服务未运行时产生的影响。​
​
服务名称​
描述​
默认监听的端口​
未运行时的影响​
SSH​
远程连接​
22​
无法通过SSH远程连接​
Web​
Web网站服务​
80(HTTP)、443(HTTPS)​
无法访问网站​
MySQL​
MySQL数据库​
3306​
无法访问数据库​
​
操作步骤​
  1. 登录目标实例,操作详情可参考登录Linux实例。​
  1. 执行以下命令,检查目标服务的端口监听状态。​
  • ​
    netstat -ntlp | grep [$Port]​
    ​
[$Port]指目标服务监听的端口,请以实际情况为准。如果您修改过目标服务默认的端口,请替换为修改后的端口号。​
  • 如果返回目标端口信息,并且监听状态为LISTEN,则说明目标服务已经处于运行状态,不需要启动,请跳过以下步骤。​
  • 如果无返回结果,即目标服务的端口未处于监听状态,请继续进行如下操作。​
  1. 执行以下命令,启动目标服务。​
  • ​
    systemctl start [$Service]​
    ​
说明​
  • [$Service]指目标服务的名称,以实际情况为准。​
  • 如果需启动的是SSH服务,则服务名称为sshd。​
  • 如果需启动的是第三方服务,例如“Nginx”、“Tomcat”、“MySQL”等,请查阅第三方服务的官方网站,获取对应的启动命令。​
  • 如果无返回结果,则表示命令执行成功,跳过以下步骤。​
  • 如果返回错误,参考错误提示进行修复后,继续进行如下操作。​
  1. 执行以下命令,检查目标服务的状态。​
  • ​
    systemctl status [$Service]​
    ​
  1. 返回结果如下图,表示目标服务处于running状态。​
  • ​​​
此处以SSH服务为例,请以实际情况为准。​
  1. 执行以下命令,检查目标服务的端口监听状态。​
  • ​
    netstat -ntlp | grep [$Port]​
    ​
  1. 返回结果如下图,表示目标服务的端口处于监听状态,即目标服务已经处于运行状态。​
  • ​​​
最近更新时间:2026.10.14 17:52:03
这个页面对您有帮助吗?
有用
有用
无用
无用