甲骨文忘记密码,丢失私钥的解决方法。

有同学在申请Oracle VPS时粗心地没有上传公钥,导致Oracle VPS开出来后无法连接和使用。解决的基本思路是:将有问题的VPS的硬盘卸载挂载到另一台正常运行的VPS上,然后修改硬盘中的公钥文件,再挂回到原来的VPS上。

Oracle VPS主机停止实例

先停止你想要上传和修改公钥的VPS主机,然后点击页面左下角的“引导卷”。

Oracle VPS主机引导卷

点击“引导卷”,选择“分离”。

Oracle VPS主机分离引导卷

现在再新建一个VPS主机,这个VPS主机要保持与需要修改公钥的VPS主机同一个区域。

Oracle VPS主机新建VPS主机

点击这个新建的已经激活运行的VPS主机,查看“附加的块存储卷”,点击添加。

Oracle VPS主机附加存储卷

把刚才你分离出来的引导卷,作为块存储卷绑定到新的VPS上。(点击放大)

Oracle VPS主机绑定新的存储卷

绑定成功后,点击该存储卷,选择“iSCSI命令和信息”。

Oracle VPS主机iSCSI命令

这时你会看到“附加命令”,将他们复制一条一条地执行。

Oracle VPS主机附加命令

命令在哪里执行?使用S-S-H登录你这个新的已经激活运行的VPS上,将上面的命令一条一条执行。

Oracle VPS主机执行附加命令

wzfou.com执行命令如下:

root@wzfou-acitve0920:~# sudo -i

root@wzfou-acitve0920:~# sudo iscsiadm -m node -o new -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260

New iSCSI node [tcp:[hw=,ip=,net_if=,iscsi_if=default] 169.254.2.2,3260,-1 iqn.2015-02.oracle.boot:uefi] added

root@wzfou-acitve0920:~# sudo iscsiadm -m node -o update -T iqn.2015-02.oracle.boot:uefi -n node.startup -v automatic

root@wzfou-acitve0920:~# sudo iscsiadm -m node -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260 -l

Logging in to [iface: default, target: iqn.2015-02.oracle.boot:uefi, portal: 169.254.2.2,3260] (multiple)

Login to [iface: default, target: iqn.2015-02.oracle.boot:uefi, portal: 169.254.2.2,3260] successful.

使用fdisk -l命令可以看到新增加的硬盘为:Disk /dev/sdb,如下代码:

root@wzfou-acitve0920:~# fdisk -l

Disk /dev/loop0: 88.7 MiB, 92983296 bytes, 181608 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/loop1: 14.1 MiB, 14811136 bytes, 28928 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 46.6 GiB, 50010783744 bytes, 97677312 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 1048576 bytes

Disklabel type: gpt

Disk identifier: 9487A09C-B811-4688-9C29-C787DDA4B075

Device Start End Sectors Size Type

/dev/sda1 227328 97677278 97449951 46.5G Linux filesystem

/dev/sda14 2048 10239 8192 4M BIOS boot

/dev/sda15 10240 227327 217088 106M EFI System

Partition table entries are not in disk order.

Disk /dev/sdb: 46.6 GiB, 50010783744 bytes, 97677312 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 1048576 bytes

Disklabel type: gpt

Disk identifier: 117F31A3-C168-4DEE-ADC5-86217961B36F

Device Start End Sectors Size Type

/dev/sdb1 2048 1050623 1048576 512M EFI System

/dev/sdb2 1050624 17827839 16777216 8G Linux swap

/dev/sdb3 17827840 97675263 79847424 38.1G Microsoft basic data

接下来我们需要将新硬盘下的/dev/sdb3(该分区下包含了Oracle VPS的authorized_keys) 挂载在/mnt下,编辑authorized_keys,将你的公钥复制粘贴到authorized_keys里。公钥生成方法参考:Oracle Cloud VPS密钥设置。命令如下:

#将新硬盘下的/dev/sdb3(该分区下包含了Oracle VPS的authorized_keys) 挂载在/mnt下

sudo mount -o nouuid /dev/sdb3 /mnt

#编辑authorized_keys,如果是CentOS,路径如下:

sudo vi /mnt/home/opc/.ssh/authorized_keys

#如果是ubuntu,则路径如下:

sudo vi /mnt/home/ubuntu/.ssh/authorized_keys

保存好了公钥。

Oracle VPS主机保存好公钥

然后执行命令解除挂载:sudo umount /mnt,现在回到存储卷,选择“iSCSI命令和信息”。现在是复制“分离命令”了。

Oracle VPS主机分离命令

到你的S-S-H那里执行分离命令,如下:

root@wzfou-acitve0920:~# sudo umount /mnt

root@wzfou-acitve0920:~# sudo iscsiadm -m node -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260 -u

Logging out of session [sid: 1, target: iqn.2015-02.oracle.boot:uefi, portal: 169.254.2.2,3260]

Logout of [sid: 1, target: iqn.2015-02.oracle.boot:uefi, portal: 169.254.2.2,3260] successful.

root@wzfou-acitve0920:~# sudo iscsiadm -m node -o delete -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260

现在,你可以将绑定好的硬盘又从新激活的VPS主机分离出来了。