当Linux实例中关于SSH的访问权限配置异常时,将导致无法远程登录。您可以通过实例健康诊断工具进行问题修复。

前提条件

Linux实例已通过实例健康诊断工具进行诊断,诊断结果中以下检查未通过:
  • 实例无法启动场景下的关键系统文件权限检查。
  • 实例无法启动场景下的SSH访问权限检查。

背景信息

问题描述:Linux实例中,用户密码和SSH的相关文件和目录的访问权限配置异常,导致无法登录Linux实例或者无法从SSH远程连接Linux实例。

问题原因:Linux实例中关于用户密码和SSH的相关文件和目录的访问权限配置不足。

本文主要介绍通过实例健康诊断工具提供的临时修复盘修复问题实例。您也可以在正常实例上挂载异常实例的系统盘进行修复。具体操作,请参见SSH的访问权限异常导致无法远程连接Linux实例

解决方案

  1. 远程连接问题实例。
    当ECS实例处于正在挂载修复盘的模式下时,只能通过VNC远程连接。具体操作,请参见通过密码认证登录Linux实例
  2. 查看问题实例原有系统盘的挂载信息。
    在临时挂载的修复盘中,问题实例原有系统盘的文件系统会被挂载到某一临时目录下。您可以通过以下任一方式查看所在的临时目录信息:
    • 在系统盘详情页的挂载实例进行查看,对应的临时目录格式示例为:/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****,其中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环境,运行以下命令,重置/var/empty/sshd目录的权限。
    警告
    • 请严格参照其他相同Linux发行版且可以正常远程登录的实例中的目录权限进行设置,避免因权限过高导致SSH服务启动失败。SSH相关文件和目录的权限通常都涉及远程连接时账户、密码等关键信息的安全性,SSH进程对于这些权限具有明确的约束。如果某个文件和目录的权限超过了SSH约束条件,SSH服务会认为其内容不可信任,可能导致SSH服务启动失败或远程连接异常问题。
    • 设置777权限意味着系统上的任何用户都拥有对该文件或目录的可读、可写和可执行的权限,并且可能会带来巨大的安全风险。例如,如果你将/var/empty/sshd目录权限更改为777,则系统上的任何用户都可以创建、删除或修改该目录中的文件。除非有明确参考,否则禁止设置777权限。
    chmod 711 /var/empty/sshd

    除了检查/var/empty/sshd目录权限,也可以参考本方案检查/etc/passwd/etc/group/etc/shadow/etc/gshadow文件和/etc/securetty目录的权限,关于各目录正确的权限,您可以参考其他可以正常远程登录的实例中目录权限。

  5. 修复完成后,退出修复环境,然后检查问题实例的当前状态。
    1. 运行exit命令,退出chroot环境。
    2. 在ECS控制台的实例健康诊断页面,卸载临时挂载的修复盘并恢复问题实例至正常模式。
    3. 远程连接已修复的ECS实例,确认成功登录。