學習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 文件。 噹噹!咱們能夠看見,新的公鑰信息並無覆蓋以前的信息,他只是繼續添加內容而已。
安全起見,咱們應該刪掉以前的公鑰信息