甲骨文Oracle推出了终身免费的机子,AMD机器比较鸡肋,但是ARM机器真香。由于薅的人很多,资源非常紧缺,经常开不出ARM机器。也有一些脚本辅助刷ARM机器,也是得等上一个多月。
好不容易刷出免费ARM服务器,有很多新手会由于各种原因,创建实例时没设置好Public Key,或者丢失私钥,也或者Oracle定期更新密钥等 ,导致SSH连不上机器。
当然最简单的办法是删除机器,重新申请,但是资源紧缺的ARM机器,删了就是心痛。
看过了好多复杂的帖子,也偷懒试过很多技巧,也问过客服,都没有很好的解决。最终还是硬着头皮操作一波,看上去感觉好复杂,实际操作其实非常简单。
简单的思路
1、停止无法登录的实例
2、分离该实例的启动卷
3、创建用来拯救的Linux实例
4、把启动卷附加到拯救的Linux实例
5、运行iSCSI命令,并连接附加盘
6、修复authorized_keys文件
7、卸载附加盘,并运行iSCSI命令分离
8、将启动卷重新附加到原始实例
很简单,按照步骤操作即可。
前期准备
一、准备密钥对
这里以Xshell为例,菜单栏->工具->新建秘钥向导,按步骤下一步,生成公钥和私钥,可以将它们全部导出成文件。
二、创建一台新的实例,AMD的实例可以随时创建,用作救援服务器。
三、创建好救援服务器后,使用XSHELL进行SSH登录。
并使用sudo -i切换到root权限。用来后面的更换甲骨文Oracle密钥操作命令使用。
更换甲骨文Oracle密钥
一、停止无法连接的服务器。
在Oracle Cloud 控制台中,转到服务器的详细信息页面,然后单击“停止”,注意是“停止”,不是“终止”!!!
二、分离问题服务器的引导卷。
停止服务器后,可以在详细页面的左下方,点击“引导卷”,在右侧列表中分离这个引导卷。
稍后我们会将这个引导卷挂载到我们上面的救援服务器中,再进行密钥修改。
三、在救援服务器中附加分离的引导卷。
切换至前面新建的救援服务器,可以在详细页面的左下方,点击“附加的块存储卷”,把上面步骤分离的引导卷,重新附加到救援服务器上。
确保选项中选择“读/写访问”。
四、查看iSCSI命令。
附加引导卷成功后,在点击【…】 – 【iSCSI 命令和信息】查看命令,这些命令用来操作附加的储存盘挂载和分离。直接复制使用就可以了。
五、切换到XSHELL救援服务器控制台,并执行命令。
1、复制iSCSI里面的加载磁盘命令,依次执行,一共三行。
2、然后查看磁盘加载情况,执行下面命令:
fdisk -l /dev/sdb
如果查看到磁盘信息,即证明已经附加成功,即上图显示的/dev/sdb3。
3、挂载磁盘、执行如下命令
sudo mount -o nouuid /dev/sdb3 /mnt
4、成功挂载后,通过编辑/mnt/home/opc/.ssh/authorized_keys文件,重新使用新的Public Key公钥。
$ sudo vi /mnt/home/opc/.ssh/authorized_keys
键盘按两次d可以删除已有秘钥,按i键进入编辑,将上面准备的公钥文件内容,记住是公钥,全部粘贴到里面,注意空格和换行,按ESC->按住shift+两次z键,保存退出
5、解除挂载,执行命令
sudo umount /mnt
6、执行下图红框中命令,分离引导卷
六、从救援服务器中分离刚才附加的引导盘
在救援服务器详细页面的左下方,点击“附加的块存储卷”,把刚才附加的引导卷进行分离,后面重新附加到连接不上SSH的服务器上。
七、切换到您要恢复SSH密钥的服务器,点击左下方“引导卷”,将刚才修复好SSH公钥的启动卷,重新附加上服务器,现在重新启动服务器,即可轻松使用SSH进行连接。
总结
以上操作看似繁琐,实际理解好思路非常简单,操作一步步做下去,100%成功,也不必浪费时间再翻查其他简单的办法。整个流程就15分钟完事,完美解决问题。
动手是解决问题的捷径!
喜欢文章请点个赞!
原创文章,作者:NicheSpider,如若转载,请注明出处:http://nichespider.com/154.html