1 背景
博主的ORACLE账号还是6年前注册的,这中间因为各种客观原因没有去折腾网站,电脑也换了,备份的资源都丢失了,里边应该包含ssh登录的一些信息。
ssh登录Oracle Cloud Linux实例时,一直连接失败,通过oracle 后台的cloud shell切换root用户时,一直提示要输入密码,我试了有8次还是错误,实在想不起来,又怕继续尝试会被系统封号,只得作罢。
必应和千问AI搜了一下,主要有如下方法:
1)分离引导卷;
2)创建定制映像;
3)重装系统(我试了几次没成功);
4)杀龟(对VPS上没有部署任何服务的小伙伴这样最省事,大不了再开1台)。思索和尝试后,最终选择使用分离引导卷来修复ssh无法登录问题。
2 分离引导卷
解决思路:通过将故障实例 A 的“硬盘”挂载到另一台救援实例 B 上,直接为实例A 添加root用户名和密码,修复故障实例A本地的ssh私钥、公钥损坏或密码以往问题,添加完再把硬盘挂载回实例A。话不多说,直接上干货
2.1 停止故障实例
1)登录到 OCI 控制台。
2)导航到 计算 (Compute) -> 实例 (Instances)。
3)选择您无法 SSH 连接的故障实例。
4点击顶部的 停止 (Stop) 按钮。
5)等待实例状态完全变为已停止,这需要一段时间莫急。
2.2 识别并分离启动盘
1)在故障实例的详情页,找到 存储(Storage)-> 引导卷 (Boot Volume)。
2)点击启动卷的右端 ... 打开详情界面
3)记下启动卷名称(类似 ocid1.bootvolume...)。
4)点击 分离 (Detach) 按钮,确认分离操作。
5)等待分离操作完成,状态变为分离 (Detached)。
2.3 准备救援实例
需要一个能正常工作、且位于相同可用性域 (Availability Domain, AD) 的 Linux 实例作为“救援实例”。如果没有救援实例,请在与故障实例相同的 AD 中创建一个新的小型 Linux 实例。确保可以正常 SSH 连接到这个“救援实例”。我这里救援实例选择的ubuntu系统,主要是支持资料多。
2.4 将故障实例启动盘附加到救援实例
1)导航到故障实例的详情页。
2)滚动到 存储 (Storage) -> 启动卷 (Boot volume)。
3)点击故障实例启动卷:instance-xxx (Boot volume)。
4)在 instance-xxx (Boot volume) 窗口中,选择Attached instance 选项,选择半虚拟化最简单,附加到救援实例,点击 附加 (Attach),等待附加完成。
3 救援实例挂载故障启动盘
3.1 SSH 连接到救援实例;
通过 SSH 连接到您的救援实例。注意是正常可以SSH登录的那台机器。
3.2 识别故障盘
通过lsblk或者 fdisk 其中之一
sudo lsblk或
sudo fdisk -l此时看到一个新磁盘(例如 /dev/sdb)。其系统分区通常是 /dev/sdb3。请根据您的实际输出确认正确的设备路径。3.3 创建挂载点:
sudo mkdir /mnt/rescue3.4 挂载故障实例的根分区(请将 /dev/sdb3 替换为您上一步确认的正确路径):
sudo mount /dev/sdb3 /mnt/rescue3.5 查看最终挂载情况
df -h显示磁盘挂载情况,如已挂载可以开展下一步工作。
4 修复故障实例盘
这里有两种方法,修复密码和DD救援包,我选择的时第一种方法。
4.1 Chroot 到故障环境并设置密码
1)使用 chroot 命令切换到故障实例的操作系统环境:
sudo chroot /mnt/rescue2)设置新密码
passwd root终端提示您输入并确认新密码。请设置一个您能记住的密码
3)设置完成后,退出 chroot 环境
exit4)卸载修复后的故障实例盘
sudo umount /mnt/rescue5)完成故障实例盘的密码设置:
4.2 DD救援包修复故障盘
正常按4.1的方法就能完成SSH登录,有余力的可以下载DD救援包。如果自己没有备份救援包的话,这里提供2个ARM救援包和2个AMD救援包供大家使用:
4.2.1 DD救援包下载
1)ARM镜像Debian10 ,DD 过程应小于 12 分钟。用户名root/密码10086.fit
cd /root && wget -cO debian.sdb.gz https://github.com/MIKU-N/OracleBackup/raw/main/dabian.sdb.gz?download=
gzip -dc /root/debian.sdb.gz | dd of=/dev/sdb2)Ubuntu 20.04 ARM 官方原版完整救援包(恢复数据约46G,耗时约1个多小时)
wget --no-check-certificate https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/Ubuntu20.04.arm.img.gz用户名:root, 密码:CNBoy.org。
3)下载下方秘钥,载入SSH工具,无密码登录
https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/backup4)Ubuntu 20.04 AMD 官方原版完整救援包(恢复数据约46G,耗时约1个多小时)
wget --no-check-certificate https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/Ubuntu20.04.amd.img.gz用户名:root, 密码:CNBoy.org。
下载下方秘钥,载入SSH工具,无密码登录
https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/backup5)debian10 ARM 网络精简救援包(恢复数据约3G,耗时约10多分钟)
wget --no-check-certificate https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/dabian10.arm.img.gz用户名:root, 密码:10086.fit
6)救砖甲骨文 AMD 执行
curl -Lo- "https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-nocloud-amd64.tar.xz" | tar -xJO | dd of=/dev/sdb bs=1M7)AMD如果需要 Debian 12 系统,则执行
curl -Lo- "https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-amd64.tar.xz" | tar -xJO | dd of=/dev/sdb bs=1M8) 救砖 甲骨文 ARM 执行
curl -Lo- "https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-nocloud-arm64.tar.xz" | tar -xJO | dd of=/dev/sdb bs=1M9)ARM如果需要 Debian 12 系统,则执行
curl -Lo- "https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-arm64.tar.xz" | tar -xJO | dd of=/dev/sdb bs=1MDD 过程大约 25 分钟。
4.2.2 恢复镜像到 /dev/sdb3 分区
如果引导卷加载路径不同,请自行修改路径
说明:为了防止在SSH连接在恢复数据中途中断导致失败,建议使用 srceen 后台窗口运行以下命令
gzip -dc '救援包完整路径' | dd of='引导卷加载路径' 例: 使用 Ubuntu 20.04 ARM 官方原版完整救援包,命令如下: gzip -dc /root/Ubuntu20.04.arm.img.gz | dd of=/dev/sdb 使用 Ubuntu 20.04 AMD 官方原版完整救援包,命令如下: gzip -dc /root/Ubuntu20.04.amd.img.gz | dd of=/dev/sdb 使用 debian10 ARM 网络精简救援包,命令如下: gzip -dc /root/dabian10.arm.img.gz | dd of=/dev/sdb恢复过程中你可以新开一个SSH窗口,然后运行以下命令后不要关闭,切换回恢复命令的窗口查看进度
watch -n 5 pkill -USR1 ^dd$5 故障实例盘物归原主
5.1 卸载并分离故障实例盘
1)回到 OCI 控制台 -> 救援实例详情页 -> 附加的块存储卷。
2)找到附加的启动卷,点击操作菜单 (...),选择 分离 (Detach);
3)等待分离完成;
5.2将启动盘重新附加到原实例(故障实例)
1)导航回到故障实例的详情页。
2)找到到 存储 (Storage) -> 引导卷 (Boot Volume)。
3)点击 附加 (Attach),选择分离的启动卷。
4)等待附加完成。
5.3 启动故障实例
在故障实例的详情页,点击启动 (Start)。
6 SSH登录到修复后的故障实例
等待实例运行后,可以通过SSH终端或者OCI后台的cloud shell进行操作。
评论 (0)