在通常情况下,多数 Linux 系统类问题可通过 VNC 方式及救援模式进行排查及修复。本文介绍如何使用这两种方式排查 Linux 实例无法 SSH 登录、系统失败问题。您可通过本文了解并在遇到实例问题时,进行排查及修复。
排查工具
VNC 登录是通过 Web 浏览器远程连接云服务器的方式,一般在无法正常 SSH 远程登录实例时使用。使用 VNC 登录方式可直接观察云服务器状态,或进行修改系统内配置文件等操作。救援模式一般在 Linux 系统无法正常启动,或无法通过 VNC 登录时使用。常见使用场景例如 fstab 配置异常、系统关键文件缺失、lib 动态库文件损坏/缺失等。
问题定位及处理
VNC 方式排查 SSH 无法登录问题
现象描述
使用 SSH 登录 Linux 实例时,出现报错信息 “ssh_exchange_identification: Connection closed by remote host”。如下图所示:
可能原因
kex_exchange_identification 阶段的 connection reset 报错,一般代表 ssh 相关进程已启动,但是配置可能存在异常,例如 sshd 配置文件权限被修改。
解决思路
参见 处理步骤,检查 sshd 进程,定位并解决问题。
处理步骤
1. 参考以下步骤,使用 VNC 登录 Linux 实例:1.1 登录 云服务器控制台,找到需要登录的 Linux 云服务器,单击右侧的登录。如下图所示:
1.2 在打开的登录窗口,单击 VNC 登录。如下图所示:1.3 在 login 后输入用户名,按 Enter,在 Password 后输入密码,按 Enter。如下图所示即为登录成功:
2. 执行以下命令,查看 sshd 进程是否正常运行。
ps -ef | grep sshd
返回结果如下图所示,sshd 进程正常。
3. 执行以下命令,查看报错原因。
sshd -t
返回类似如下图所示信息 “/var/empty/sshd must be owned by root and not group or world-writable.
”,可定位错误原因为 /var/empty/sshd/
权限问题导致。
您还可通过查看 /var/log/secure
日志中的报错信息来辅助排查。如下图所示:
4. 执行以下命令,查看 /var/empty/sshd
目录权限。
ll -d /var/empty/sshd/
返回结果如下图所示,可知权限被修改为777。
5. 执行以下命令,修改 /var/empty/sshd/
文件权限。
chmod 711 /var/empty/sshd/
参见 使用 SSH 登录 Linux 实例 测试后,可正常远程登录实例。
VNC 方式排查 Linux 系统启动失败问题
现象描述
无法正常 SSH 远程登录 Linux 云服务器,但使用 VNC 方式登录后,查看系统启动失败且提示信息 “Welcome to emergency mode”。如下图所示:
可能原因
可能由于 /etc/fstab
配置不当导致。
例如,已在 /etc/fstab
中配置使用设备名称自动挂载磁盘,但云服务器重启时设备名称发生改变,导致系统无法正常启动。
解决思路
参见 处理步骤 修复 /etc/fstab
配置文件,重启服务器后再进行核验。
处理步骤
1. 参见 处理步骤1,使用 VNC 登录 Linux 实例。2. 进入 VNC 界面后,查看到如 现象描述 中所示界面,请输入 root 账户密码并按 Enter 登录服务器。输入的密码默认不显示,如下图所示:
3. 进入系统后,执行以下命令,查看 fstab 文件中盘符信息是否正确。
lsblk
返回结果如下图所示,文件中盘符信息有误:
4. 执行以下命令,备份 fstab 文件。
cp /etc/fstab /home
5. 执行以下命令,使用 VI 编辑器打开 /etc/fstab
文件。
vi /etc/fstab
6. 按 i 进入编辑模式,将光标移动至错误配置行首,并输入 #
注释该行配置。如下图所示:
7. 按 Esc 输入 :wq 后,按 Enter 保存设置并退出编辑器。8. 通过控制台重启实例,详情请参见 重启实例。9. 验证是否能正常启动及登录。
救援模式排查 Linux 系统启动失败问题
现象描述
Linux 系统重启之后无法正常启动,提示信息有诸多 FAILED 启动失败项。如下图所示:
可能原因
可能由于关键系统文件缺失导致启动失败,例如 bin 或 lib 文件缺失。
解决思路
参见 处理步骤,通过控制台进入实例救援模式,进行问题排查及修复。
处理步骤
1. 进入救援模式前,强烈建议您对实例进行备份,以防止由于出现误操作等造成的影响。云硬盘可通过 创建快照 备份,本地系统盘可通过 创建自定义镜像 镜像备份。2. 登录 云服务器控制台,在“实例”页面中,选择实例所在行右侧的更多 > 运维与检测 > 进入救援模式。如下图所示:
3. 在弹出的进入救援模式窗口中,设置救援模式期间登录实例的密码,勾选同意强制关机。如下图所示:4. 单击进入救援模式,此时实例状态会变为进入救援模式。如下图所示,该过程一般会在几分钟内完成:
正常进入救援模式后实例的状态会变为红色叹号的救援模式。如下图所示:
5. 使用 root
账户及 步骤3 中设置的密码,通过以下方式登录实例。若实例有公网 IP,则请参见 使用 SSH 登录 Linux 实例。若实例无公网 IP,则请参见 使用 VNC 登录 Linux 实例。6. 本文以 VNC 方式登录为例,登录成功后,依次执行以下命令挂载系统盘根分区。说明救援模式下实例系统盘设备名为 vda,根分区为 vda1,默认未挂载。
mkdir -p /mnt/vm1
mount /dev/vda1 /mnt/vm1
执行完成后,返回结果如下图所示:
7. 挂载成功后,即可操作原系统根分区中的数据。
您也可使用 mount -o bind 命令,挂载原文件系统的一部分子目录,并通过 chroot 命令用来在指定的根目录下运行指令,具体操作命令如下:
mount -o bind /dev /mnt/vm1/devmount -o bind /dev/pts /mnt/vm1/dev/ptsmount -o bind /proc /mnt/vm1/procmount -o bind /run /mnt/vm1/runmount -o bind /sys /mnt/vm1/syschroot /mnt/vm1 /bin/bash
执行 chroot
命令时:若无报错信息,可继续执行 cd /
命令。若出现如下图所示报错信息,说明无法正常切换根目录,此时可执行 cd /mnt/vm1
查看根分区数据。
8. 通过命令,可查看原系统根分区中 /usr/bin
目录下的所有文件被删除。如下图所示:
9. 此时,可创建一台同操作系统的正常机器,并执行以下命令将正常系统 /usr/bin
目录下的文件压缩后远程拷贝至异常机器上。正常机器:依次执行以下命令
cd /usr/bin/ && tar -zcvf bin.tar.gz *
scp bin.tar.gz root@异常实例ip:/mnt/vm1/usr/bin/
说明有公网 IP 可通过公网拷贝,无公网 IP 需通过内网拷贝。执行结果如下图所示:
异常机器:在救援模式下依次执行以下命令
cd /mnt/vm1/usr/bin/
tar -zxvf bin.tar.gz
chroot /mnt/vm1 /bin/bash
执行结果如下图所示:
10. 实例修复完成后,选择实例所在行右侧的更多 > 运维与检测 > 退出救援模式。如下图所示:
11. 退出救援模式后实例处于关机状态,开机后进行系统验证。如下图所示,系统已恢复。
对腾讯云CVM服务器有疑惑?想了解产品收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/17350.html