Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
為什麼當我嘗試透過 SSH 連線到 EC2 執行個體時,會收到「伺服器拒絕我們的金鑰」錯誤訊息?
當我透過 SSH 連線到 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體時,收到「伺服器拒絕我們的金鑰」錯誤訊息。
解決方法
SSH 伺服器 (sshd) 可能會因下列其中一個原因拒絕私有 SSH 金鑰:
- 嘗試連線至 Amazon EC2 執行個體時,您使用了不正確的私有金鑰檔案。若要對此問題進行疑難排解,請參閱連線至 Amazon EC2 Linux 執行個體時,為何會收到「imported-openssh-key」或「PuTTY Fatal Error」錯誤?
- 有人變更了 /etc/ssh/sshd_config 中的 SSH 伺服器設定。若要對此問題進行疑難排解,請參閱如何在變更執行個體的 sshd_config 檔案後,使用 SSH 存取 EC2 執行個體?
- 作業系統 (OS) 無法掛載 /etc/fstab 主目錄。若要對此問題進行疑難排解,請參閱在我嘗試啟動 EC2 Linux 執行個體時,為什麼它會進入緊急模式?
- 連線到 Amazon EC2 執行個體時,您使用了不正確的 Amazon Machine Image (AMI) 使用者名稱。如需有效使用者名稱的清單,請參閱錯誤: 伺服器拒絕我們的金鑰_,或_沒有支援的驗證方法。
- 有人從伺服器中刪除了使用者。若要對此問題進行疑難排解,請將使用者作為新使用者新增回伺服器。
如果您的執行個體有權限問題或缺少目錄,您也可能會收到伺服器拒絕我們的金鑰錯誤訊息。若要確認執行個體權限和目錄,請使用下列其中一種方法。
使用 EC2 序列主控台
如果已啟用 Linux 用 EC2 序列主控台,即可用於對支援的 Nitro 型執行個體類型進行疑難排解。
使用 Systems Manager 登入執行個體,然後檢查權限
先決條件:安裝 AWS Systems Manager Agent (SSM Agent)。此外,請確定您的組態符合 Session Manager (AWS Systems Manager 的一項功能) 的先決條件。
若要使用 Session Manager 來對執行個體進行疑難排解,請完成下列步驟:
-
開啟 Systems Manager console (Systems Manager 主控台)。
-
若要確定主目錄下的檔案具有正確的權限,請執行下列命令:
stat /home/ec2-user/ ls -ld /home # Should show drwxr-xr-x (755) ls -ld /home/ec2-user # Should show drwx------ (700) ls -ld /home/ec2-user/.ssh # Should show drwx------ (700) ls -l /home/ec2-user/.ssh/authorized_keys # Should show -rw------- (600)注意:將 ec2-user 替換為您 AMI 的正確使用者名稱。
在輸出中,檢查存取權以確認您的組態使用以下權限:
/home Linux 主目錄必須具有 0755/drwxr-xr-x 權限。
/home/ec2-user/ 使用者的主目錄必須具有 0700/drwx------ 權限。
/home/ec2-user/.ssh .ssh 目錄權限必須具有 0700/drwx------ 權限。
/home/ec2-user/.ssh/authorized_keys authorized_keys 檔案權限必須具有 0600/-rw------- 權限。
輸出範例:File: '/home/ec2-user/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 10301h/66305d Inode: 18322 Links: 3 Access: (0700/drwx------) Uid: ( 500/ec2-user) Gid: ( 500/ec2-user) -
若要更新組態的權限,請執行下列命令:
sudo chown root:root /home$ sudo chmod 755 /home$ sudo chown ec2-user:ec2-user /home/ec2-user -R sudo chmod 700 /home/ec2-user /home/ec2-user/.ssh sudo chmod 600 /home/ec2-user/.ssh/authorized_keys**注意:**將 ec2-user 替換為您 AMI 的正確使用者名稱。
執行 AWSSupport-TroubleshootSSH 執行手冊
若要自動修正導致錯誤的問題,請執行 AWSSupport-TroubleshootSSH。執行手冊會在執行個體上安裝 Amazon EC2Rescue 工具,然後識別並修正導致 SSH 期間遠端連線錯誤的問題。如需詳細資訊,請參閱我在嘗試使用 SSH 連線至 EC2 執行個體時收到錯誤。如何使用 AWSSupport-TroubleshootSSH 自動化工作流程對 SSH 連線問題進行疑難排解?
使用使用者資料來修正執行個體上的權限
**重要:**在停止和啟動執行個體之前,請執行下列動作:
- 建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區的備份。
**注意:**如果您的執行個體是執行個體儲存體備份,或具有包含資料的執行個體儲存體磁碟區,則當您停止執行個體時,Amazon EC2 會刪除該資料。如果您的執行個體根裝置是執行個體儲存體磁碟區,則無法將使用者資料用於變更 SSH 金鑰。 - 完成解決步驟後,暫時從其 Amazon EC2 Auto Scaling 群組中移除執行個體。
**注意:**如果您停止 EC2 Auto Scaling 群組中的某個執行個體,則可能會根據您的縮減保護設定終止該執行個體。您使用 Amazon EMR、AWS CloudFormation 或 AWS Elastic Beanstalk 啟動的執行個體,可能位於 Auto Scaling 群組中。 - 將執行個體關閉行為設定為停止,以確保執行個體在您停止時不會終止。
- 安裝並設定 cloud-init。如需詳細資訊,請參閱 cloud-init 網站上的設定 SSH 和 SSH 金鑰。
**重要:**對執行個體使用者資料所做的更新會影響所有支援 cloud-init 命令的發行版。
**注意:**當您停止和啟動執行個體時,該執行個體的公有 IP 位址也會變更。最佳做法是使用彈性 IP 位址而不是公有 IP 位址,將外部流量路由到執行個體。如果您使用 Amazon Route 53,則可能需要在公有 IP 位址變更時更新 Route 53 DNS 記錄。
若要使用使用者資料修正權限問題,請完成下列步驟:
-
開啟 Amazon EC2 console (Amazon EC2 主控台)。
-
在導覽窗格中,選擇 Instances (執行個體),然後選取您的執行個體。
-
選擇 Instance state (執行個體狀態),然後選擇 Stop Instance (停止執行個體)。
注意:如果您無法選擇停止執行個體,則表示該執行個體已停止,或者其根裝置是執行個體儲存體磁碟區。 -
選擇 Actions (動作),然後選擇 Instance settings (執行個體設定)。
-
選擇 Edit user data (編輯使用者資料),然後輸入以下命令:
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: - [scripts-user, always] --//Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash chown root:root /home chmod 755 /home chown ec2-user:ec2-user /home/ec2-user -R chmod 700 /home/ec2-user /home/ec2-user/.ssh chmod 600 /home/ec2-user/.ssh/authorized_keys --//**注意:**將 ec2-user 替換為您 AMI 的正確使用者名稱。輸入上述命令時,請勿加入多餘的空格。
-
選擇 Save (儲存)。
預設情況下,使用者資料命令會在每個執行個體執行一次。上述步驟會變更預設行為,使執行個體在每次重新啟動、停止或啟動,都會新增公有金鑰。若要還原預設行為,請移除自訂的使用者資料命令。最佳做法是允許使用者資料在執行個體的第一次啟動之後執行。您可以使用 ModifyInstanceAttribute API來修改執行個體的使用者資料。若要限制對 ModifyInstanceAttribute API 的存取,請使用 AWS Identity and Access Management (IAM) 政策。
相關資訊
Amazon EC2 金鑰對和 Amazon EC2 執行個體

