跳至正文

甲骨文服务器重装系统后,(忘记)密码或密钥错误无法登录怎么办?

本文同样适用于因忘记甲骨文服务器密码或密钥导致的无法登录服务器情况。

之前兔哥曾写过一篇关于《轻松实现甲骨文云Oracle Cloud重装系统教程》,同时也做了视频发布在 YouTube (永久免费的甲骨文云VPS官方重装系统教程)。最近突然收到一些网友的反馈,说按照步骤重装系统后,原来的密码或密钥无法登录服务器。这是怎么回事呢?

首先我确保当时发布博客以及视频制作时,这个方法确实可以正常登录。但是后来具体因为什么原因无法登录我也不知道发生了什么,也不确定是不是一些操作上的问题。总之,不管出于何种原因导致的无法登录,今天我们就来尝试解决一下。在此我要感谢这位找我寻求帮助的兄弟 mis,同时感谢四海部落博主的 甲骨文云服务器忘记密码/丢失密钥的解决办法 这篇博客文章。


为什么不删除忘记密码的服务器重新创建一台新的服务器

可能有很多人无法理解:为什么不删除忘记密码的服务器,重新再创建一台新的服务器呢?这其中涉及到最重要的原因莫过于某些热门地区的服务器一旦删除,就再也无法创建。现在甲骨文基本上所有地区的 ARM 服务器都无法新建,甚至某些地区的 AMD 实例都没法新建,会提示容量不足。

所以大家宁可想办法重装系统、想办法重新设置密码,也不愿意删除旧机器。

甲骨文云新版控制台切换旧版本

近期,甲骨文的控制台发生了较大的变化。此前熟悉的控制台页面换成了更具现代化设计的样式。有很多网友不习惯这样的页面。网络上很多的教程都是使用的旧版本的页面,对于一些刚接触甲骨文的网友来说,新版本也会造成一些困惑。

新版控制台首页
新版控制台首页
新版控制台实例详情页面
新版控制台实例详情页面

目前,甲骨文还未关闭旧版本的控制台页面,通过以下方法轻松切换成旧版本控制台。

1、点击甲骨文控制台首页顶部横幅:新的控制台体验 “入门” 按钮。

关闭旧版本的控制台页面
图一:关闭旧版本的控制台页面

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

图二:关闭旧版本的控制台页面
图二:关闭旧版本的控制台页面
图三:关闭旧版本的控制台页面
图三:关闭旧版本的控制台页面

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

旧版本控制台实例详情页面
旧版本控制台实例详情页面

拯救服务器密码或密钥错误流程

本文所介绍的方法,是 通过将目前无法登录的服务器引导卷绑定到一台可以正常登录的服务器上,然后通过登录这台正常的服务器修改引导卷中的密码或密码实现

为适应甲骨文关于控制台的更改,本次教程以新版本控制台为例。

1、准备公钥和私钥

因为需要重新设置密码或密钥,所以这一步是必须的。

创建公钥和私钥最简单的方法就是利用甲骨文新建服务器时创建公私钥。步骤如下:

1.1、打开甲骨文实例页面:https://cloud.oracle.com/compute/instances,点击 “创建实例” 按钮。

甲骨文实例页面
甲骨文实例页面

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

创建实例
创建实例
下载公私钥
下载公私钥
为了方便之后的操作,我们将下载的公共密钥名称更改为:keys.pub。

这样,公钥和私钥我们就准备好了,可以进行下一步操作。

2、分离无法登录服务器的引导券

2.1、在控制台实例中点击无法登录的服务器实例,以下图中名称为:ARM-13 的实例为例。

图一:分离无法登录服务器的引导券
图一:分离无法登录服务器的引导券

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

图二:停止实例运行
图二:停止实例运行
图三:停止实例运行
图三:停止实例运行
图四:实例已停止
图四:实例已停止

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

图五:分离引导卷
图五:分离引导卷
图六:确认分离引导卷
图六:确认分离引导卷
图七:引导券状态为已分离
图七:引导券状态为已分离

3、登录或新建正常可以登录的服务器,附加块存储

此时,如果我们正好有一台可以登录的甲骨文服务器,或者没有也没关系,可以新建一台。在这台正常的服务上,进行附加块存储操作。附加的正好上第二步中分离的引导卷。

3.1、在控制台实例中点击可以正常登录的服务器实例,以下图中名称为:ARM-212 的实例为例。

图 3.1 甲骨文实例页面
图 3.1 甲骨文实例页面

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

图 3.2 附加快存储卷
图 3.2 附加快存储卷

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

图 3.3 选择之前分离的引导券
图 3.3 选择之前分离的引导券
图 3.4 点击附加
图 3.4 点击附加

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

图 3.5 状态改为已附加
图 3.5 状态改为已附加

接下来我们无需在甲骨文控制台操作,使用远程连接工具(xshell 或 termius 等)登录这台正常登录的服务器进行操作。

4、修改密钥

4.1、查看附加的引导券

此时,我们登录这台可以正常登录的服务器。使用 root 身份,输入:lsblkfdisk -l 命令查看我们附加的引导卷。

下图 4 中可以看到,当前附加的引导券 sdb1。通过输入 fdisk -l 命令,可以知道该引导券的磁盘路径为:/dev/sdb1

图 4 查看附加的引导券
图 4 查看附加的引导券
图 4.1 引导券路径
图 4.1 引导卷路径

4.2、将第一步生成公钥文件粘贴到服务器的 root 目录下

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

图 4.2 公钥内容
图 4.2 公钥内容

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
图 4.3 输入修改命令
图 4.3 输入修改命令

命令解释:

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、在无法登录的服务器重新挂载被分离的引导卷

这一步将刚刚修改了密钥的引导券重新附加到之前无法登录的服务器。具体步骤逆向操作即可。首先是在这台正常登录的服务器上,分离刚刚附加的块存储卷。

图 5 附加块存储卷
图 5 附加块存储卷

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

图 5.1 分离块存储卷确认页面
图 5.1 分离块存储卷确认页面

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

图 5.2 附加的块存储卷中无任何显示
图 5.2 附加的块存储卷中无任何显示

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

图 5.3 实例列表
图 5.3 实例列表

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

图 5.3 附加引导卷
图 5.3 附加引导卷

确认附加引导卷

图 5.4 确认附加引导卷
图 5.4 确认附加引导卷

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

图 5.5 引导卷状态
图 5.5 引导卷状态

6、启动无法登录的服务器

当上述引导卷状态显示为已附加状态后,我们点击顶部的启动按钮。

图 6 启动无法登录服务武器
图 6 启动无法登录服务武器

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

图 6.1 服务器状态改为“正在运行”
图 6.1 服务器状态改为“正在运行”

7、登录之前无法登录的服务器

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


总结

整个过程看似繁琐,其实熟悉流程之后发现也就在分离引导卷和附加块存储卷上需要稍微注意一些,命令部分,仅需要执行那七行命令。

本文介绍的也足够详尽,每一步都有配图,所以看似起来似乎有点冗长。不过不用担心,只要按照教程一步步操作,相信可以帮助大家解决 甲骨文服务器忘记密码/密钥无法登录 的问题。

最后想说创作不易,如果这篇文章对大家有帮助,麻烦点击一下底部的 “点击支持兔哥的创作” 按钮,兔哥在此谢过大家🙏。

本文标题:甲骨文服务器重装系统后,(忘记)密码或密钥错误无法登录怎么办?
本文链接:https://uuzi.net/oracle-cloud-server-login-error-after-reinstall/
本文标签:甲骨文云・服务器重装・SSH登录・密码错误・密钥失效
发布日期:2025年5月12日
更新日期:2025年5月12日
版权声明:兔哥原创内容,版权所有人为本网站作者,请勿转载,违者必究!
免责声明:文中如涉及第三方资源,均来自互联网,仅供学习研究,禁止商业使用,如有侵权,联系24小时内删除!

如本文“对您有用”,欢迎随意打赏兔哥,让我们坚持创作!

   

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注