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