查看更多关于Oracle Cloud的介绍!
2019年10月12日16:21:43 新增2种重置密钥的方法!
由于博主开通的第一台Oracle Cloud服务器SSH密钥设置有问题,一直登录不上去!一直在琢磨怎么重置SSH密钥!
有大佬更新过几篇文章,但是博主亲测均失败了。然后琢磨出的其他方法。
本文更换密钥部分内容非常详细,对于大佬可以直接看【最后说明】里面介绍了思路。
解释说明
SSH密钥登录:更安全的登录方式。主要包含2部分,密钥(用户密钥) / 公钥。
假如:张三想用 PC1电脑上 登录 SERVER1服务器。那么公钥需要放到SERVER1上,PC1电脑需要密钥完成验证才可以登录!
密钥:放到你的电脑上!
公钥:放到服务器上!
上面的解释应该算比较容易理解了!
生成SSH密钥
Oracle Cloud开通服务器,这个SSH 密钥很关机!这里推荐大家使用Xshell生成!
这里详细说明以下生成步骤!
1)Xshell软件:菜单 – 工具 – 用户密钥管理者(按alt键可见菜单栏)
密钥类型:RSA
密钥长度:2048
2)点击下一步后,回自动生成公钥对!
3)设置密钥名称以及用户密钥密码。
【用户密钥】密码可以为空!
4)点击完成后,可见我们新建的用户密钥。选择密钥点击属性。
5)可见【公钥】的选项卡,点击可见该密钥的公钥!服务器上需要添加的公钥就是文本框内的一堆儿~
6)Xshell连服务器的时候,需要在【用户身份验证】
方法:Public Key
用户名:服务器上的可登录的用户名
用户密钥:选择上面我们新建的密钥
密码:如果你设置为空,那就空的。上面我们设置的是 123
更换IP地址
开通的云服务器,有时候IP已经被Q,无法访问了!怎么办呢?
点击实例详情 – 【附加的 VNIC】- 点击VNIC详情 – 【IP地址】 – 【…】- 点击编辑
我们选择没有公共IP,点击更新!
然后再次点击编辑,选择临时公共IP 或者 预留公共IP 点击更新即可!
预留IP怎么选?点击菜单如下图!直接进去申请IP即可!
更换密钥方法1
这个方法不用不需要创建定制映像! 这里的步骤比较简要。部分内容一带而过,具体可看方法2中的步骤!
A服务器是无法登陆的服务器,需要换密钥。
B服务器是可以登陆的服务器。
1)A服务器 – 停止 – 分离引导盘。
2)B服务器 – 附加存储卷 。
3)登陆B服务器,执行挂载命令iSCSI命令。
4)查看磁盘挂载情况。
1 |
fdisk -l |
4)挂载sdb3 到 /mnt
1 |
mount /dev/sdb3 /mnt |
提示:如果查看磁盘非sdb3,或者挂载出现错误(wrong fs type)。请参考更换密钥方法2内容!
5)修改密钥,这里不再重述。
6)卸载磁盘。
1 |
umount /mnt |
7)执行分离命令iSCSI命令。
8)B服务器分离附加卷。
9)A服务器附加引导卷。
更换密钥方法2
这里是本文的重点!可能你在开通Oracle Cloud机器的时候,忘记填写SSH用户密钥?或者其他原因导致开通机器后无法登录?
现在日本 和 韩国区域又不敢终止机器。怎么办?
提醒一下:这部分内容持续写了几天,经过多次尝试终于可以了!部分截图可能是老的!
准备工作
1)Oracle Cloud账号上还有试用金额(或者能创建免费服务器)!
2)按照上面的方法生成一个正确可用的密钥和公钥!
创建定制映像
1)点开实例详情,操作 – 创建定制映像
2)名称随便命名一下即可!创建映像可能需要几分钟!
3)创建完成后,可以在 计算- 定制映像 中看到!
创建新实例
1)在新创建的映像点击【…】 – 【创建实例】(也可以直接在面板首页创建实例,映像要选自定义映像)
2)映像源一定要是刚才新自定义的!!实例配置,选择一个最低配就行!如果你还有免费的实例,可选免费的!
3)非常关键!
一定要将SSH密钥复制进去!也就是上面提到的SSH 公钥!然后就创建即可!
4)关于Cloud-Init脚本,博主测试添加脚本后,并没有生效。当然你也可以将脚本和SSH密钥一块加上!
这里不说明了,请参考历史文章有介绍这部分内容:申请Oracle Cloud永久免费服务+300美元试用额度
5)1分钟左右实例创建成功!如果由于各种原因IP无法访问,参考上面的【更换IP】内容。
6)然后使用Xshell工具登录一下。能登录那就OK,可以继续!
分离引导卷
1)查看要重置SSH密钥的实例详情,点击【停止】,切记不是终止!!!
2)点击【引导卷】- 【…】- 点击【分离】
3)待引导卷变成已分离!
附加存储块
1)查看新实例详情 – 【附加的块存储卷】 – 点击【附加块存储卷】
块存储卷,选择刚才分离的那个即可!点击【附加】!
2)状态变成已附加。点击【…】 – 【iSCSI 命令和信息】查看命令!
3)命令主要使用:附加命令 和 分离命令!
磁盘挂载
这部分内容需要在Xshell中操作!
1)切换用户到root下,方便我们操作
1 |
sudo -i |
2)查看当前磁盘情况
1 |
fdisk -l |
目前我们只有1块磁盘 /dev/sda 46.6G容量!
3)附加引导卷。复制附加命令到 Xshell执行!妥妥的成功没问题!
4)再次查看当前磁盘情况!
1 |
fdisk -l |
明显看到多了一块磁盘 /dev/sdb 其中 Linux System内容 在 /dev/sdb1
5)执行以下挂载磁盘到 /mnt 目录下。
1 |
mount /dev/sdb1 /mnt |
看下 /mnt 目录下确实有内容了!
6)修改SSH密钥!
如果你安装的是精简版的系统可能需要安装以下vim编辑器!
1 |
apt-get install vim |
修改SHH密钥文件(这里涉及到一些vim的操作,大家自己百度)
1 2 3 4 |
vim /mnt/home/ubuntu/.ssh/authorized_keys #按2次d 删除第一行数据 #复制XShell生成的正确公钥,按Shift + Insert 粘贴进去 #再按:wq 保存退出 |
如果你是CentOS系统SSH密钥位置有点不一样!
1 |
vim /mnt/home/opc/.ssh/authorized_keys |
7)修改成功后,取消磁盘挂载!
1 2 |
cd / umount /mnt |
然后复制分离命令,执行一下即可!
分离存储卷
1)查看新实例详情 – 【附加的块存储卷】 – 【…】 – 点击【分离】
2)存储卷不见后,这个新建的实例也可以终止掉了!
附加引导卷
1)查看要重置SSH密钥的实例详情 点击【引导卷】- 【…】- 点击【附加】
2)状态变成已付加后,就可以启动实例了!
3)最后去把自定义映像删除!
更换密钥方法3
利用DD命令来复制安装一个系统!
分离A服务器引导盘,然后挂载到B服务器上(具体操作看上面)
挂载成功后,直接使用下面命令,将B服务器的系统直接DD到A服务器的引导卷中(包括登陆密钥)。
PS:这个执行的命令比较久,我试过一次需要2小时。
1 |
dd if=/dev/sda of=/dev/sdb |
完成后再挂载到A服务器上登陆即可!
最后说明
操作过程不算复杂!一些Linux下的操作需要一点点基础!由于这篇文章修修改改陆续写了3天,可能部分截图有问题。
这篇文章差点流产,因为19号有网友在文章中留言说有人写了重置SSH密钥的方法,博主去亲测了一下,发现会提示错误无法附加!
今天(21号)看见Qi大佬更新了一篇文章(参考文献)。博主又测试了一次还是同样的错误。
1 |
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error. |
然后我又去查阅了2篇博文内容参考了老外的一篇文章(参考文献)。发现老外的文章是针对 Oracle Linux 7 系统的SSH密钥重置。如果你使用的这个系统应该是可以的没问题!
但是大部分人都是使用的Ubuntu 和 CentOS,老外的文章内容并不适用。
其实重置SSH密钥的思路很简单。就是将需要重置密钥的实例创建映像,用这个映像创建新实例,然后修改引导券!
希望本文对你有用,有问题可以留言。
实例中有创建控制台连接的选项,上传公钥后不就可凭私钥root到实例上了吗?
大神您好,我谷歌验证码密码丢失,请问怎么找回,或者怎么和其他应用解绑。谢谢 急
再次请教大神:我非常幸运的申请到了甲骨文韩国的vps。但是新的问题又来了:我用xshell制作了公钥和私钥,并在创建实例时上传了公钥并创建成功。但是用xshell登陆时,提示:所选的用户密钥未在远程主机上注册。
谷歌了一下有人说要给.ssh目录与里面的密钥相应的权限,并给出了以下命令:chmod 700 .ssh
cd .ssh
chmod 600 *
service sshd restart
因为是没有linnux基础的小小白,不知道上述命令如何操作啊。是在cmd 里操作?还是用啥方法?请大神救救我啊。韩国鸡比较珍贵,现在不敢乱动了,静等大神帮忙指导解决。谢谢。大神有电报群吗?我入你的群可以快速获得帮助。再次感谢。
删了重建吧,感觉你把公钥私钥搞错了!
请教大神:我好不容易申请到了日本的主机,用Ubuntu 18.04系统搭建了v2,因为是新手,对搭建结果不满意,ip也请朋友测试而泄露了,想更换ip,结果误操作把实力终止了!现在可以登录帐号,但是始终无法建立实力,你这个方法对我的情况有效吗?是终止了实例的情况。还有啥其他方法救活我的实例?请大神赐教啊。谢谢
终止就相当于删除实例了。需要新建实例,不过免费实例比较抢手,一直处于缺货状态。需要多试一试,或者利用脚本!
没有一个IP Ping得通
方法3,其实只要dd引导信息就行,文件系统只要直接复制就行了,这样数据最多拷贝5个G,而不是50个G
怎么DD引导呢?
备份MBR,linux下使用如下命令:
# dd if=/dev/hda of=/root/linux.bin bs=512 count=1
现在没有测试环境了,我东京的没法创建亲的实例
谢谢大佬,今晚我试一试
不行了,镜像也提示补货了
太垃圾了 小天哥哥
呸,是因为都按教程操作了。所以也提示了。
我呸~ O(∩_∩)O
发表回复还要注册,太蛋疼了,不过还是过来感谢下。
用楼主给的方法成功更换了 SSH KEY,我的是 centos 7 的系统。
主要是文件系统是 xfs 格式,会遇到 mount: /mnt: wrong fs type 这个错误。
假设到这里你已经按楼主的方法成功使用了附加命令,下面需要做:
1、需要先修改下 UUID ,如使用 xfs_admin -U generate /dev/sdb3
2、挂载 mount /dev/sdb3 /mnt
3、按楼主的方法修改 SSH KEY 文件内容,我的是在 /mnt/home/opc/.ssh/authorized_keys
4、取消挂载 umount /mnt
5、重要!将 UUID 还原,如果你忘记了,并且是按楼主的方式根据已有实例模版生成的新实例,可以使用 parted -l 查看 /dev/sda3 的 UUID 。不然附加到原实例里,启动实例后无法连接。
修改命令如上,不过需要将 generate 改为 对应的 UUID 值,如 xfs_admin -U aaaa-bbbb-cccc /dev/sdb3
6、输入分离命令,到这里为止,可以按照楼主的方式进行了。
END 祝你成功!
谢谢您的反馈!
请问新开一个实例配置如:VM.Standard.E2.1 (虚拟机)1 个核心 OCPU,8 GB 内存 ,页面也没看到收费多少,这个收费的是不是在300 美元试用额度里面扣,不升级账户就不会实际扣信用卡吧?
只要不升级就不会扣费!! 如果不显示始终免费 就是要付费的!第二天账单可以看见付费内容
我的创建的系统是CentOS6 ,可以从新选择CentOS7 或者别的系统吗?
DD系统把 不能重装系统
有相关教程请指教
请问博主免费实例如何重装系统呀?我的日本的被我折腾得开不了机了,在网页上“开机” 一会儿就变成“正在关机“,现在又不敢“终止”怕没货了。
可以DD以下系统
这样搞的 引导卷,岂不是非免费了么
号被封了。。
你干啥了
我也是。。。啥都没干。。。。
这家是不是可以用CLI来操作,马甲大佬研究研究
楼主,之前创建的实例系统是centos 7,能否通过类似的方法更换成Ubuntu 18.04的系统?
可以参考DD系统部分内容:https://51.ruyo.net/14138.html#19
映像源一定要是刚才新自定义的!!实例配置,选择一个最低配就行!如果你还有免费的实例,可选免费的!
这一步实例配置只能选择始终免费的配置(还无货),选择其他配置会提示红字:
Shape VM.Standard2.1 is not valid for image ocid1.image.oc1.ap-tokyo-1..XXX
不好用。按照上述教程在同一区域新开了实例,开通时也添加了xshell生成的密钥,但还是无法连接新开的实例,跟想要修改密钥的实例连接同样的问题。。。不停地要求输入密码,显示XX未注册什么的
我申请的主区域是日本,订阅了其它所有区域,系统选的centos6。为什么给我分配的ip是美国ip?
右上角的区域是否正确?IP是广播的,你跟踪一下。
创建镜像,然后再开一个的方法也不错。