AWS EC2 Key Pairs 更換實務指南:不中斷服務也能安全換 Key
AWS EC2 Key Pairs 更換實務指南:不中斷服務也能安全換 Key

學習如何透過 authorized_keys 或 Root Volume Recovery,安全地更換 EC2 Key Pairs,在實務操作中恢復存取權限,同時強化整體安全性。

當金鑰遺失、疑似外洩,或基於資安需求需要定期輪替時,更換 EC2 Key Pairs 是很常見的操作。但 AWS 並不提供「一鍵直接替換」既有 instance key pair 的功能,實際流程會依 instance 目前是執行中、已停止,或完全無法存取而有所不同。

本文將帶你實際了解兩種在真實環境中最常用、也最可靠的 EC2 Key Pairs 更換方法

什麼是 EC2 金鑰對(EC2 Key Pairs)?

EC2 金鑰對是用來安全驗證你連線到 Linux 或 Windows EC2 執行個體的機制。它包含一組公有金鑰(public key,儲存在 instance 上),以及一組私有金鑰(private key,建立 instance 時下載並自行保存)。之後你就是透過私有金鑰來登入該執行個體(instance)。

更換 EC2 Key Pair 前一定要知道的重點

在開始操作前,請先確認以下幾個關鍵事實:

  • 無法在 AWS Console 中,直接替一台「正在執行中」的 instance 更換 key pair。
  • Linux 與 Windows instance 的處理方式不同。
  • 你必須至少還能存取 instance,或有權限將它停止。
  • 在移除舊 key 之前,一定要先建立新的 key pair

支援的 EC2 Key Pair 更換方式總覽

情境建議方法可靠性
執行個體正在執行且可存取手動更新 authorized_keys一定成功
完全失去存取權限Root volume recovery一定成功

方法一更新 authorized_keys(最主要、也是最安全的方法)

只要你還能透過 SSH 登入,這就是最穩定、也最推薦的做法

適用情境

  • 執行個體正在執行中
  • 你仍然可以用舊的 key 透過 SSH 連線登入
  • 目標是 Linux-based 的 instance(Linux 系列作業系統)

步驟 1:

先建立一組新的 key pair。你可以用 AWS Console 或第三方工具,這裡以 AWS Console 為例:進入 EC2 dashboard > Network & Security > Key Pairs,點選 Create key pair

透過 EC2 Console 建立 EC2 金鑰對

輸入 key pair 名稱,其餘設定維持預設即可。

建立新的替代用 key pair

步驟 2:

現在,在終端機中,讓我們使用剛剛建立的 private key 來產生一把 public key。請使用以下指令來建立 public key: ssh-keygen -y -f replacement-key.pem > replacement-key.pub 。如果在執行過程中出現任何警告訊息,請使用指令 chmod 600 replacement-key.pem 來更新 private key 的權限。

由 private key 產生 public key

取得 public key 之後,你需要使用既有的 private key 連線到 EC2 instance,指令如下: `ssh -i old-key.pem user@instance-ip`。 接著開啟位於 `~/.ssh/authorized_keys`. 的 authorized key 檔案,將新的 public key 貼入 authorized_keys 檔案中,並儲存。

將新 public key 加入 EC2 instance

注意:如果在使用 SSH 連線時看到任何警告訊息,請確認已將 private key 的權限更新為 chmod 600 old-key.pem.

現在,嘗試使用新的 private key 連線到該 instance。若連線成功,請將 authorized_keys 檔案中原本的第一把 public key 移除。

使用新的 private key 連線 EC2

只要操作正確,這個方法可以做到 零停機。切記一定要先確認新 key 正常後,再移除舊 key。

方法二:Root Volume Recovery(通用救援方法)

當你完全遺失 key、無法再存取 instance 時,就會使用這個方法。此流程會先將原本 instance 的磁碟(EBS)拆卸下來,並將該磁碟掛載到一台新的 EC2 instance 上。在新的 EC2 instance 中,我們會將磁碟掛載起來,並如同前一個方法所做的方式,直接修改 public key。完成 key 更換後,會再將磁碟從新的 EC2 instance 上拆卸,並重新掛回原本的 instance。

適用情境

  • 無法透過 SSH 連線
  • Instance 完全無法登入
  • 正式環境(Production)的緊急復原情境

範例指令(於救援用 instance 上執行)

步驟 1:

先停止 EC2 instance,才能拆卸磁碟。

停止 EC2 instance

透過 Actions > Storage > Detach Volume 拆卸磁碟。

拆卸 EC2 instance volume

會讓你選擇你想拆卸的 volume。

拆卸 EBS volume

步驟 2:

Actions > Storage > Attach volume 將該 EBS volume 掛載到新的 EC2(救援機)。

將 EBS 掛載到救援 EC2

你必須確認新建立的 EC2 instance 與原本的 EC2 instance 位於相同的 region 與相同的 availability zone。否則,在重新掛載時,你將無法看到該磁碟(volume)。

接著選擇要掛載的 volume 與 device name(該磁碟會以此名稱被掛載),然後點擊 「Attach volume」。

選擇 volume 和裝置名稱

步驟 3:

登入新的 EC2 instance,並將磁碟掛載起來。首先,使用指令 sudo mkdir /mnt/recovery 建立一個目錄。接著使用 lsblk -f 查看磁碟分割資訊,並選擇不是主要磁碟(primary volume)的那一個。你可以先確認原本 instance 使用的磁碟名稱,再選擇另一顆磁碟。

確認新加入的磁碟

接下來,使用指令 sudo mount /dev/xvdb1 /mnt/recovery/ 來掛載該分割區。請務必先透過 lsblk -f 確認實際的磁碟名稱;對於 Linux 的主要分割區,檔案系統通常會是 ext4。

檢查磁碟分割區名稱

完成掛載後,即可使用指令 sudo vim /mnt/recovery/home/admin/.ssh/authorized_keys 來修改 authorized_keys。此步驟中,請將方法一所更換的 public key 貼入該檔案中。

掛載磁碟並修改 public key

完成上述操作後,請使用指令 sudo umount /mnt/recovery 將磁碟卸載。

步驟 4:

現在,請將該磁碟從新的 EC2 instance 上拆卸,並依照先前相同的流程,重新掛載回原本的 EC2 instance。完成磁碟掛載後,啟動該 EC2 instance,你應該就可以透過 SSH 連線登入該 instance。

使用更換後的 private key 連線至 EC2 instance

在這個方法中,你是直接修改磁碟內容,完全繞過 SSH 進行處理,因此會產生停機時間。如果你希望將停機時間降到最低,可以先建立一台 clone instance,待 SSH key 復原完成後,再進行 IP 位址的切換。

結論

更換 EC2 Key Pair 並不是一個單一的 AWS 操作,而是一個與存取權限、instance 狀態高度相關的管理任務。在關鍵環境中,強烈建議由專業團隊協助處理。

正式環境的 EC2 Key Rotation 該怎麼做?

勤英科技可協助企業進行 EC2 Key Pair 輪替、緊急存取救援,以及關鍵系統零停機最佳實踐。

👉 立即聯繫勤英科技,為你的正式環境建立安全、可控的存取管理機制。

author avatar
Golam Rabbany
AWS AWS EC2 AWS 資安