Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
如果在開始啟動執行個體後遺失 SSH 金鑰對,我該如何連線到我的 Amazon EC2 執行個體?
我想連接至我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,但我遺失了 SSH 金鑰對。
簡短描述
若要在遺失 SSH 金鑰對時連線到 EC2 執行個體,請使用下列其中一種方法:
- 輸入使用者資料以建立新的金鑰對。
- 對於受管節點的執行個體,請使用 AWS Systems Manager 來復原金鑰對。
- 對於執行 Amazon Linux 2 (AL2) 版本 2.0.20190618 及更新版本或 Amazon Linux 2023 (AL2023) 的執行個體,請使用 EC2 Instance Connect。
- 如果您可連接執行個體且可存取 EC2 序列主控台,請使用序列主控台。
**注意:**此方法不需要您停止並啟動執行個體。 - 建立救援執行個體來建立新的公有金鑰。
**重要:**在停止和啟動執行個體之前,請執行下列動作:
- 建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區的備份。
**注意:**如果您的執行個體是執行個體儲存體備份,或具有包含資料的執行個體儲存體磁碟區,則當您停止執行個體時,Amazon EC2 會刪除該資料。 - 將執行個體關閉行為設定為停止,以確保執行個體在您停止時不會終止。
**注意:**當您停止和啟動執行個體時,該執行個體的公有 IP 位址也會變更。最佳做法是使用彈性 IP 位址而不是公用 IP 位址,將外部流量路由到執行個體。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
輸入使用者資料指令碼
**重要:**請勿在使用者資料指令碼中儲存敏感資料。請改用安全的方法,例如 AWS Secrets Manager。
如果您的執行個體無法存取 cloud-init 或您遇到 cloud-init 問題,請繼續使用救援執行個體。
建立新的金鑰對
請完成下列步驟:
- 建立新的金鑰對。
- 如果您在 Amazon EC2 主控台上建立私有金鑰,請擷取金鑰對的公有金鑰。
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 停止您的執行個體。
- 選擇 Actions (動作),然後選擇 Instance settings (執行個體設定)。
- 選擇 Edit user data (編輯使用者資料),然後輸入以下指令碼:
**注意:**將 username 替換為預設使用者名稱或先前建立的自訂使用者名稱。將 PublicKeypair 替換為公有金鑰。輸入完整公有金鑰時,以 ssh-rsa 開頭。Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [users-groups, once] users: - name: username ssh-authorized-keys: - PublicKeypair - 選擇 Save (儲存)。
- 啟動您的執行個體。
確認 cloud-init 階段已完成
在執行個體主控台輸出中,檢查以下因素以確保 cloud-init 階段已完成:
- 沒有錯誤訊息。
- 所有 cloud-init 命令均列為已執行。
- 您有看到 cloud-init 的完成訊息,其類似以下範例: 「Finished [0;1;39mCloud-init: Final Stage[0m Cloud-init v.A.B.C finished at ..」。
從執行個體的使用者資料中移除命令
請完成下列步驟:
- 停止您的執行個體。
- 選擇 Actions (動作),然後選擇 Instance settings (執行個體設定)。
- 選擇 Edit user data (編輯使用者資料),然後清除欄位中的所有內容。
- 選擇 Save (儲存)。
- 啟動您的執行個體。
使用 Systems Manager
若要復原 Systems Manager 中的受管節點執行個體,請使用 AWSSupport-ResetAccess 執行手冊來復原金鑰對。AWSSupport-ResetAccess 會使用 EC2Rescue,自動在執行個體上產生並新增新的 SSH 金鑰對。
Systems Manager 會將您執行個體的新 SSH 私有金鑰加密並儲存在 Parameter Store (AWS Systems Manager 的一項功能) 中,格式為 /ec2rl/openssh/instance_id/key。
若要從 Parameter Store 取得私有 SSH 金鑰,請執行 get-parameters AWS CLI 命令:
aws ssm get-parameters --names "/ec2rl/openssh/instance_id/key" --with-decryption --output json --query "Parameters[0].Value" | sed 's:\\n:\n:g; s:^"::; s:"$::' > key-pair-name
**注意:**將 instance_id 替換為您的執行個體 ID,將 key-pair-name 替換為您金鑰對的名稱。
然後,使用參數的值作為內容,建立一個新的 .pem 檔案。使用該 .pem 檔案重新連線至無法存取的執行個體。
若要將私有金鑰轉換為 .pem 檔案,請執行以下命令:
ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem
**注意:**將 key-pair-name 替換為您金鑰對的名稱。
自動化執行手冊會建立一個由密碼啟動的備份 Amazon Machine Image (AMI)。Amazon EC2 不會自動刪除新的 AMI,因此其會保留在您的 AWS 帳戶中。
若要找到 AMI,請完成以下步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 選擇 AMIs。
- 在搜尋欄位中輸入自動化 ID。
使用 EC2 Instance Connect
若要連線至 Amazon Linux 執行個體,請參閱使用 EC2 Instance Connect 連線至 Linux 執行個體。
使用 EC2 序列主控台
如果您可以存取 Linux 的 EC2 序列主控台,請使用該主控台對支援的 Nitro 型執行個體類型進行疑難排解。如需詳細資訊,請參閱設定 EC2 序列主控台的存取權。
使用救援執行個體
請完成下列步驟:
-
在與原始執行個體相同的可用性區域中啟動救援執行個體。
-
若要取得根磁碟區裝置名稱,請執行下列命令:
sudo lsblk -f輸出範例:
NAME FSTYPE LABEL UUID MOUNTPOINT xvda └─xvda1 xfs 1234abcd-56ef-78gh-90ij-1234klmnopqr / xvdf └─xvdf1 xfs abcd1234-ef56-gh78-ij90-qr1234klmnop -
若要將附加磁碟區掛載到救援執行個體,請執行下列命令:
sudo mkdir /mnt/target sudo mount /dev/xvdf1 /mnt/target**注意:**將 /dev/xvdf1 替換為原始執行個體的根磁碟區裝置名稱。
-
若要建立新的公有金鑰,請執行以下命令:
sudo mkdir -p /mnt/target/home/USER/.ssh echo "your_new_public_key" | sudo tee -a /mnt/target/home/USER/.ssh/authorized_keys**注意:**將 USER 替換為原始執行個體的使用者名稱,並將 your_new_public_key 替換為您的公有金鑰。公有金鑰名稱以 ssh-rsa 開頭。
-
若要設定對執行個體中金鑰的存取權,請執行以下命令:
OS_USER=os-user sudo chown -R $OS_USER:$OS_USER /mnt/target/home/$OS_USER/.ssh sudo chmod 700 /mnt/target/home/$OS_USER/.ssh sudo chmod 600 /mnt/target/home/$OS_USER/.ssh/authorized_keys**注意:**將 os-user 替換為與啟動執行個體的 AMI 相關聯的使用者名稱。
-
若要卸載磁碟區,請執行以下命令:
sudo umount /mnt/target
- 語言
- 中文 (繁體)

相關內容
- 已提問 1 年前
AWS 官方已更新 10 個月前