学习AWS EC2 的第一件事情一般都是创建一个新的实例,然后最后他会要求用户创建一个Key Pair,然后通过这个Key Pair来进行SSH的连接。
他的本质其实是创建了一个公钥/私钥对之后,把公钥保留在EC2的实例上,然后用户下载私钥。系统创建的Key Pair 我们可以在EC2旁边的Key Pairs 里面找到。
我们也可以自己创建之后,手动上传Public Key的 BASE64 的内容。手动创建的话 Linux/OSX 可以直接用 openssl-gen rsa 2048 的命令,Windows可以用 PuttyGen的工具。
下面我们看看一个有趣的例子。如果我们SSH进入一个现有的EC2 环境中,手动又添加了一个公钥的信息,会发生什么。
首先连接一个当前的EC2 实例, 这里我是用的Windows Subsystem for Linux, 所以需要加sudo执行
SSH进入之后,进入 .ssh的隐藏目录,我们的公钥文件就保存在authorized_keys里面
另外一种方式查看我们的公钥信息可以通过AWS EC2的meta data进行查询。所有的metadata 都保留在 http://169.254.169.254/latest/meta-data 里面。可以看见他后面还有各种各样的目录保存相关信息。
我们可以一层一层的找下去,如果忘记名字,他会提示有哪些可选项,最后找到我们的公钥信息,和上面的文本内容是一致的。
接下来,创建一个公钥/私钥对,可以通过 ssh-keygen这个命令来创建
之后,我们把公钥的内容添加到已有的authorization_keys 文件里面。 可以看见,他现在有两个公钥的信息了,一个是通过AWS创建的,一个是我刚刚手动创建的
我再创建一个新的S3 Bucket,把我的私钥拷贝进去
下载这个私钥到我的电脑上,然后再尝试通过这个私钥连接我的EC2,成功!!
接下来我们试试删除掉我们在EC2 KeyPairs里面的公钥,看看会发生什么
结果是毫不受影响,我仍然可以通过我的私钥进行SSH连接
因为我的公钥信息仍然在那里没有受到任何影响
metadata也不受影响
最后看看,如果说,我不小心丢失了我的私钥,那我该如何访问我的EC2 实例? 答案是创建一个镜像,然后重新生成一个EC2。下面看看如何操作。
首先创建一个镜像
接下来通过这个镜像我们再创建一个同样的EC2,创建的最后,他会提示我们创建新的Key Pairs
我们有2个实例了
然后通过新的Key 我们可以SSH到这个新的EC2实例中。
然后查看一下我们的authorization_keys 文件。 当当!我们可以看见,新的公钥信息并没有覆盖之前的信息,他只是继续添加内容而已。
安全起见,我们应该删掉之前的公钥信息
来源:oschina
链接:https://my.oschina.net/u/4361193/blog/4882657