问题导读
1.如果我们丢失了本地的私钥,那不就不能登陆虚拟机了?
2.该如何解决丢失了本地的私钥,不能登陆虚拟机了问题?
3.丢失私有密钥时连接到虚拟机原理是什么?
丢失私有密钥时连接到虚拟机(1)
有一些镜像制作的时候,只允许使用ssh登陆。所以一般创建虚拟机时,我们会将自己的公钥通过ec2的meta服务写入虚拟机,而后在本地通过和公钥一起生成的私钥登陆。 但是,既然是钥匙,就具备了“丢“的属性,如果我们丢失了本地的私钥,那不就不能登陆虚拟机了?其实倒也不至于不能登陆,只是费事一点罢了。 原理是这样:你需要将本虚拟机的云硬盘(volume)断开,将云硬盘作为数据卷挂载到另一台虚拟机上,然后修改 authorized_keys 文件,将云硬盘挂载回原虚拟机,重启虚拟机即可。 Note:本教程适用的虚拟机必须是从云硬盘创建的,从镜像或者快照创建的请参考丢失私有密钥时连接到虚拟机(2) 具体步骤- 暂停虚拟机,点击左侧导航栏的云硬盘,选择本机A的云硬盘,将其从本机断开
- 还是在云硬盘的目录,将此云硬盘挂载到另一台虚拟机B
[mw_shl_code=bash,true]ubuntu@key-test1:~$ sudo mkdir /mnt/tempvol[/mw_shl_code]
- 使用之前确定的volume名称或设备名称在临时安装点安装volume(或分区)
[mw_shl_code=bash,true]ubuntu@key-test1:~$ sudo mount /dev/vdb1 /mnt/tempvol[/mw_shl_code]
- 这样你进入/mnt/tempvol目录就是进入了挂载的云硬盘,修改authorized_keys文件,删除失效的public_key,添加新的public_key
[mw_shl_code=bash,true]ubuntu@key-test1:~$ vim /mnt/tempvol/home/ubuntu/.ssh/authorized_keys[/mw_shl_code]
- 修改完成后,卸载已连接的volume,以将其重新连接至原始实例
[mw_shl_code=bash,true]ubuntu@key-test1:~$ sudo umount /mnt/tempvol[/mw_shl_code]
卸载时可能会出现设备忙的告警,多试几次即可
回到openstack的控制面,将云硬盘重新挂载到机器A,启动机器A即可从拥有私钥的那台机器上登陆
################################################################################################
丢失私有密钥时连接到虚拟机(2)
原理和丢失私有密钥时连接到虚拟机(1)是一样的,从镜像创建的虚拟机我们也可以将其挂载到别的机器上,只是需要的命令不同。 具体步骤
|