在工作当中,经常可以遇到系统出现了某些问题,仅能在救援模式下进入系统,此时系统没有正常启动,通常来说网络和服务都不可用,如果需要通过ssh协议进行数据备份的情况,就需要手动根据不同的情况启动服务,下面介绍如何在救援模式启动sshd服务。
首先需要进入grub内,修改通用参数为ro init=/bin/bash,此处不过多介绍
进入救援模式之后,首先需要修改环境变量,确保可以正常执行某些命令
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
修改PATH变量之后,系统内的命令均可执行,接着查看网卡的接口状态,执行以下命令
ip link show
如果网卡接口没有出现up,就需要手动启动网络接口,执行以下命令
ip link set ens3 up
ip link set lo up
根据不同的接口,进行针对性的修改,目前观察云上环境,若只有一个网卡,则救援模式下接口名称均为ens3
启动网络接口之后,网卡还没有获取到地址,需要执行下面的命令通过dhcp获取网络信息
dhclient ens3
通常执行上面的命令之后,网络已经恢复正常,此时可以ping测试,需要注意的ubuntu和debian在救援模式下无法执行CTRL+C,所以不建议从内部ping外面测试,以及执行其他需要CTRL+C结束的命令
若网络验证无问题,最后就可以手动启动sshd服务了,执行下面的命令
/usr/sbin/sshd -D
或
/usr/sbin/sshd -D &
此时可以从外部ssh远程连接服务器,sftp也同样可用
以上的 方案在hce2.0,centos 8,ubunu 22.04,debian 12均验证可行
下面是救援模式的部分常用命令:
exec /lib/systemd/system 临时从当前shell启动systemd,仅建议在系统被破坏,病毒入侵情况当中使用
exec=/sbin/init 从救援模式到正常的系统
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 修改环境变量
挂盘切根:
mount /dev/vdx /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
检查文件系统:
fdisk -l # 适用于 MBR
lsblk -f # 显示分区及文件系统
blkid # 显示分区 UUID
parted -l # 适用于 GPT
grub引导修复:
grub-install --root-directory=/mnt /dev/vdx
用于在 /dev/vdx 设备上安装 GRUB,并将其引导文件写入 /mnt 目录(通常是已挂载的根文件系统,需注意dev/vdx是磁盘,不是分区。
grub-mkconfig -o /mnt/boot/grub/grub.cfg
https://honda-fit.ru/forums/index.php?autocom=gallery&req=si&img=7033