如果您无法使用root用户通过SSH远程连接Ubuntu系统的ECS实例,可以通过实例健康诊断工具进行问题修复。

前提条件

Linux实例已通过实例健康诊断工具进行诊断,诊断结果中实例无法启动场景的SSH是否允许root用户登录检查未通过。

背景信息

问题描述:无法使用SSH远程连接Ubuntu系统的ECS实例,但是可以使用VNC登录,查看日志提示failed password

问题原因:Ubuntu 18.04系统默认SSH的配置文件禁止root用户登录。
说明 Linux社区提供的Ubuntu 18.04系统默认禁用了root用户登录,但阿里云对应的公共镜像默认支持root用户登录。

操作步骤

  1. 远程连接问题实例。
    当ECS实例处于正在挂载修复盘的模式下时,只能通过VNC远程连接。具体操作,请参见通过密码认证登录Linux实例
    说明 当您通过实例健康诊断工具诊断出问题后,诊断系统已自动在问题实例中挂载了修复盘,建议您根据本文提供的操作步骤,通过临时挂载的修复盘进行问题修复。您也可以通过ECS控制台卸载修复盘并恢复问题实例至正常模式,然后直接通过VNC登录实例进行修复。具体操作,请参见无法使用SSH远程连接Ubuntu系统的ECS实例
  2. 查看问题实例原有系统盘的挂载信息。
    在临时挂载的修复盘中,问题实例原有系统盘的文件系统会被挂载到某一临时目录下。您可以通过以下任一方式查看所在的临时目录信息:
    • 通过ECS控制台的实例健康诊断结果获取,对应的信息格式示例如下所示:/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
    • 在临时挂载的修复盘中,运行mount命令查看。例如,问题实例原有系统盘的设备路径为/dev/vda,命令示例如下所示:
      mount | grep /dev/vda
      返回结果如下所示:
      /dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
  3. 运行chroot命令,将根目录切换为问题实例原有系统盘所在的临时路径,并进入chroot环境。
    您需要在问题实例原有系统盘所在的临时路径中进行文件修复。例如,临时路径为/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****,命令如下所示:
    chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
  4. chroot环境中,运行以下命令备份/etc/ssh/sshd_config文件。
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  5. 编辑/etc/ssh/sshd_config文件。
    • AllowUsersAllowGroupsDenyUsersDenyGroups等用户信息配置项是否正确,确保用于登录的用户未被禁止。
    • PasswordAuthentication配置项的值是否符合实例的登录方式。

      例如,使用密码登录实例时,PasswordAuthentication配置项应为yes;使用密钥对登录实例时,该配置项应为no

    1. 运行以下命令,进入编辑模式。
      vi /etc/ssh/sshd_config
    2. PermitRootLogin配置项的值修改为yes
      建议您根据业务实际情况,检查以下配置项:
    3. 修改完毕后,按下Esc键,然后输入:wq后回车,保存并退出文件。
  6. 修复完成后,退出修复环境,然后检查问题实例的当前状态。
    1. 运行exit命令,退出chroot环境。
    2. 在ECS控制台的实例健康诊断页面,卸载临时挂载的修复盘并恢复问题实例至正常模式。
    3. 远程连接已修复的ECS实例,确认成功登录。

来源:阿里云