摘要:
本文详细介绍了解决甲骨文云服务器因忘记密码或密钥导致无法登录的方法。通过将无法登录的服务器的引导卷绑定到另一台正常服务器上,修改引导卷中的密钥或密码,最终恢复访问权限。文章还提到甲骨文控制台的新旧版本切换方法,并强调了热门地区服务器删除后难以重建的问题。
要点列表:
- 甲骨文服务器因密码或密钥错误无法登录时,可通过引导卷绑定到正常服务器修改密钥或密码解决。
- 热门地区的服务器一旦删除可能无法重建,因此不建议直接删除旧机器。
- 甲骨文控制台新旧版本可通过关闭“启用体验”按钮切换回旧版界面。
- 解决流程包括准备公钥和私钥、分离引导卷、附加到正常服务器、修改密钥、重新挂载引导卷并启动服务器。
- 创建公钥和私钥可通过甲骨文新建服务器时的密钥生成功能实现。
- 分离引导卷需先停止服务器实例,再在存储选项中操作。
- 修改密钥时需将公钥文件粘贴到服务器的指定目录,并执行一系列命令。
- 重新挂载引导卷后,启动服务器即可用新密钥登录。
- 整个过程需注意引导卷的分离和附加状态,确保操作正确。
- 文章提供了详细的步骤和配图,帮助用户逐步解决问题。
删除并重建忘记密码的服务器或许是不错的选择,但实际情况是,甲骨文的受欢迎区域现在几乎无法新建ARM甚至AMD实例。因此,用户宁愿费时找回密码或重装系统,也不敢冒险删除原有服务器,否则可能再也无法获得相同的资源。
近期,甲骨文的控制台发生了较大的变化。此前熟悉的控制台页面换成了更具现代化设计的样式。有很多网友不习惯这样的页面。网络上很多的教程都是使用的旧版本的页面,对于一些刚接触甲骨文的网友来说,新版本也会造成一些困惑。


目前,甲骨文还未关闭旧版本的控制台页面,通过以下方法轻松切换成旧版本控制台。
1、点击甲骨文控制台首页顶部横幅:新的控制台体验 “入门” 按钮。

2、关闭 “启用体验” 按钮


经过上述步骤操作之后,我们在尝试打开实例后会发现,一切又回到了从前。

拯救服务器密码或密钥错误流程
本文所介绍的方法,是 通过将目前无法登录的服务器引导卷绑定到一台可以正常登录的服务器上,然后通过登录这台正常的服务器修改引导卷中的密码或密码实现。
为适应甲骨文关于控制台的更改,本次教程以新版本控制台为例。
1、准备公钥和私钥
因为需要重新设置密码或密钥,所以这一步是必须的。
创建公钥和私钥最简单的方法就是利用甲骨文新建服务器时创建公私钥。步骤如下:
1.1、打开甲骨文实例页面:https://cloud.oracle.com/compute/instances,点击 “创建实例” 按钮。

1.2、创建实例页面,直接一路点击 “下一步” 按钮到网络这一项。向下滑动找到 “添加SSH 密钥”,点击“下载私有密钥” 和 “下载共有密钥” 。将这两个密钥保存到电脑上(保存好),之后登录服务器需要用到。


这样,公钥和私钥我们就准备好了,可以进行下一步操作。
2、分离无法登录服务器的引导券
2.1、在控制台实例中点击无法登录的服务器实例,以下图中名称为:ARM-13 的实例为例。

2.2、下图中,点击右上角操作下拉列表中的 “停止” 。在弹出的确认停止页面中点击“停止实例” 按钮。等待大约 1 分钟的时候,看到顶部状态由 “正在运行” 变为 “已停止”,进行下一步操作。



2.2、实例中点击 “存储” 选项,之后点击下图右小角三个点,选择“分离引导卷”。在弹出确认页面后,继续点击“分离引导卷”按钮,等待数分钟,当引导卷状态由 “已附加” 改为 “已分离”,可继续执行下一步。



3、登录或新建正常可以登录的服务器,附加块存储
此时,如果我们正好有一台可以登录的甲骨文服务器,或者没有也没关系,可以新建一台。在这台正常的服务上,进行附加块存储操作。附加的正好上第二步中分离的引导卷。
3.1、在控制台实例中点击可以正常登录的服务器实例,以下图中名称为:ARM-212 的实例为例。

3.2、选择实例中的的 “存储” 项目,点击下图中底部的 “附加快存储卷” 按钮。

3.3、弹出的页面中,在卷这一项中,找到我们第二步分离的引导券。点击图 3.4 中的附加按钮。


3.4、等待数分钟后,会看到附加的块存储卷状态改为已附加,本步骤操作完成。

接下来我们无需在甲骨文控制台操作,使用远程连接工具(xshell 或 termius 等)登录这台正常登录的服务器进行操作。
4、修改密钥
4.1、查看附加的引导券
此时,我们登录这台可以正常登录的服务器。使用 root 身份,输入:lsblk
或 fdisk -l
命令查看我们附加的引导卷。
下图 4 中可以看到,当前附加的引导券 sdb1。通过输入 fdisk -l
命令,可以知道该引导券的磁盘路径为:/dev/sdb1


4.2、将第一步生成公钥文件粘贴到服务器的 root 目录下
我们可以在电脑本地使用文本编辑器打开第一步中生成的公钥文件。复制该文本,在服务器中输入nano /root/keys.pub 命令,将复制的文本粘贴进去,完成后同时按 ctrl + x ,之后点击键盘上的 y,保存退出。当输入命令:ls,发现 keys.php 文件存在,此步骤完成。


4.3、使用命令修改登录密钥
sudo mount /dev/sdb1 /mnt
mv /root/keys.pub /root/authorized_keys
cp /root/authorized_keys /mnt/home/opc/.ssh/
cp /root/authorized_keys /mnt/root/.ssh/
sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /mnt/etc/ssh/sshd_config
sudo umount /mnt

命令解释:
1、sudo mount /dev/sdb1 /mnt
- 这行命令将分区 /dev/sdb1 挂载到 /mnt 目录。
- 挂载分区意味着将物理磁盘分区与操作系统文件系统连接,以便访问该分区中的文件。
- 在实际使用时,/dev/sdb1 需要替换为你实际使用的分区,例如 /dev/sda1 或 /dev/nvme0n1p1。
2、mv /root/keys.pub /root/authorized_keys
- 将公钥文件 keys.pub 移动并重命名为 authorized_keys。这个文件包含了允许登录该系统的公钥,通常被用于 SSH 登录验证。
- 你应该确保将 /root/keys.pub 替换为你实际生成的公钥文件路径和名称。
3、cp /root/authorized_keys /mnt/home/opc/.ssh/
- 这行命令将 authorized_keys 文件复制到 /mnt/home/opc/.ssh/ 目录,这样 opc 用户就可以使用公钥进行 SSH 登录。
- 假设 /mnt 挂载了远程系统的文件系统,所以目标路径是 /mnt/home/opc/.ssh/,实际上对应的是远程系统中的 opc 用户的 .ssh 文件夹。
4、cp /root/authorized_keys /mnt/root/.ssh/
- 这行命令将 authorized_keys 文件复制到 /mnt/root/.ssh/ 目录,这样 root 用户也能使用公钥进行 SSH 登录。
5、sed -i ‘s/#PubkeyAuthentication yes/PubkeyAuthentication yes/g’ /mnt/etc/ssh/sshd_config
- 这行命令使用 sed 编辑器来修改 SSH 配置文件 /mnt/etc/ssh/sshd_config,启用公钥认证。
- 它通过搜索并替换配置文件中的 #PubkeyAuthentication yes 为 PubkeyAuthentication yes 来启用公钥认证。# 表示该行是注释,去掉 # 后可以启用相关功能。
6、sudo umount /mnt
- 这行命令卸载之前挂载的分区,即 /mnt 目录。
- 一旦分区被卸载,任何对 /mnt 目录的修改都会被同步到磁盘。卸载操作非常重要,以确保对文件系统的修改得以保存,并且不再占用资源。
5、在无法登录的服务器重新挂载被分离的引导卷
这一步将刚刚修改了密钥的引导券重新附加到之前无法登录的服务器。具体步骤逆向操作即可。首先是在这台正常登录的服务器上,分离刚刚附加的块存储卷。

在弹出的确认分离快存储卷窗口中,点击确定按钮。

等待附加的块存储卷中不含任何存储卷,进行下一步操作。

此时,我们返回实例列表,打开之前停止无法登录的服务器。

选择 “存储”,将引导卷中之前分离的引导卷重新附加。

确认附加引导卷

等待引导卷状态变为已附加:

6、启动无法登录的服务器
当上述引导卷状态显示为已附加状态后,我们点击顶部的启动按钮。

等待服务器状态由 “已停止” 改为 “正在运行”:

7、登录之前无法登录的服务器
使用用户名 root,密钥使用之前生成的私钥即可登录之前无法登录的服务器。

总结
虽然步骤看起来有点多,但掌握要领后会发现其实并不复杂,重点就集中在处理引导卷和附加存储卷的操作上需要注意细节。至于命令部分,核心操作也就那关键的七行代码。
这篇教程的每个步骤都提供了详细的图文说明,虽然显得稍微长了一点,但请放心按部就班跟着操作。只要一步一步来,保证能帮大家完美解决甲骨文云服务器忘记密码或密钥丢失无法登录的问题。
最后还是想说,准备这份教程花费了不少心血,如果确实对您有所帮助,还望能在文末给个支持。
原创文章,作者:WanKe,如若转载,请注明出处:https://wankewu.com/resource/572.html