連線到執行個體的故障診斷
下列資訊和常見錯誤可協助您疑難排解連線到執行個體的問題。
若要疑難排解連線至 Windows 執行個體的問題,請參閱《Windows 執行個體的 Amazon EC2 使用者指南》中的 Windows 執行個體疑難排解。
連線問題和錯誤
- 連線問題的常見原因
- 連線到執行個體時發生錯誤:連線時間逾時
- 錯誤:無法載入金鑰 ... 預期為:任一私有金鑰
- 錯誤:伺服器無法辨識使用者金鑰
- 錯誤:許可遭拒或 [執行個體] 連接埠 22 已關閉連線
- 錯誤:未受保護的私有金鑰檔案
- 錯誤:私有金鑰的開頭必須為「-----BEGIN RSA PRIVATE KEY-----」,結尾為「-----END RSA PRIVATE KEY-----」
- 錯誤:伺服器拒絕了我們的金鑰,或是沒有可用的支援驗證方法
- 無法對執行個體執行 Ping 動作
- 錯誤:伺服器意外關閉網路連線
- 錯誤:EC2 Instance Connect 的主機金鑰驗證失敗
- 無法使用 EC2 Instance Connect 連線至 Ubuntu 執行個體
- 我的私有金鑰遺失。如何連線到我的 Linux 執行個體?
連線問題的常見原因
建議您透過確認已正確執行下列任務來開始疑難排解執行個體的連線問題。
- 確認執行個體的使用者名稱
使用您的使用者帳戶的使用者名稱或用於啟動執行個體的 AMI 預設使用者名稱,可連線至執行個體。
-
取得使用者帳戶的使用者名稱。
如需如何建立使用者帳戶的詳細資訊,請參閱在 Linux 執行個體上管理使用者。
-
取得您用於啟動執行個體的 AMI 的預設使用者名稱:
用於啟動執行個體的 AMI 預設使用者名稱 Amazon Linux 2023
Amazon Linux 2
Amazon Linux
ec2-user
CentOS centos
或ec2-user
Debian admin
Fedora fedora
或ec2-user
RHEL ec2-user
或root
SUSE ec2-user
或root
Ubuntu ubuntu
Oracle ec2-user
Bitnami bitnami
Rocky Linux rocky
其他 檢查 AMI 提供者
-
- 確認您的安全性群組規則允許流量
-
請確保與執行個體關聯的安全群組允許來自您的 IP 地址的傳入 SSH 流量。VPC 的預設安全群組根據預設並不允許傳入 SSH 流量。啟動執行個體精靈建立的安全群組根據預設會啟用 SSH 流量。如需將傳入 SSH 流量規則新增至 Linux 執行個體的步驟,請參閱 授權 Linux 執行個體的傳入流量。如需驗證步驟,請參閱 連線到執行個體時發生錯誤:連線時間逾時。
- 確認您的執行個體已就緒
-
啟動執行個體之後,執行個體可能需要幾分鐘的時間準備就緒讓您連接。檢查您的執行個體,以確保它正在執行並通過其狀態檢查。
前往 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格中,選取 Instances (執行個體),然後選取您的執行個體。
-
請確認下列內容:
-
在 Instance state (執行個體狀態) 欄中,驗證您的執行個體處於
running
狀態。 -
在 Status check (狀態檢查) 欄中,驗證您的執行個體已通過兩項狀態檢查。
-
- 確認已滿足連線的所有先決條件
-
確保您備妥連線所需的所有資訊。如需更多詳細資訊,請參閱 連接至您的 Linux 執行個體。
如需連線類型的特定先決條件,例如 SSH、EC2 Instance Connect、OpenSSH、PuTTY 等,請參閱下列選項。
Linux 或 macOS X
如果您的本機電腦作業系統是 Linux 或 macOS X,則請檢查以下連線選項的特定先決條件:
Windows
如果您的本機電腦作業系統是 Windows,則請檢查以下連線選項的特定先決條件:
連線到執行個體時發生錯誤:連線時間逾時
如果您試著連線至執行個體,並收到錯誤訊息 Network error:
Connection timed out
或 Error connecting to [instance], reason: ->
Connection timed out: connect
,則請嘗試下列動作:
檢查安全群組規則。
您需要安全群組規則,來允許透過適當的連接埠,從本機電腦公有 IPv4 地址傳入流量。
查看子網的路由表。
您需要一個路由路徑,來將目的地位於 VPC 之外的所有流量,傳送到 VPC 的網際網路閘道。
查看子網的網路存取控制清單 (ACL)。
網路 ACL 必須允許連接埠 22 (適用於 Linux 執行個體) 或連接埠 3389 (適用於 Windows 執行個體) 上的本機 IP 地址的傳入流量。它也必須允許傳送到暫時連接埠 (1024-65535) 的傳出流量。
-
在 https://console.aws.amazon.com/vpc/
開啟 Amazon VPC 主控台。 -
在導覽窗格中,選擇 Subnets (子網)。
-
選取您的子網。
-
在 Network ACL (網路 ACL) 索引標籤中,對於 Inbound rules (傳入規則),請確認這些規則允許透過所需的連接埠,從您的電腦傳入流量。否則,請刪除或修改會阻止流量的規則。
-
對於 Outbound Rules (傳出規則),確認這些規則允許透過暫時連接埠將流量傳出到電腦。否則,請刪除或修改會阻止流量的規則。
如果您的電腦位於企業網路中
請詢問網路管理員,了解內部的防火牆是否允許透過 22 號 (適用於 Linux 執行個體) 或 3389 號埠 (適用於 Windows 執行個體),來傳入流量到您的電腦或從您的電腦傳出。
如果您的電腦上具有防火牆,請確認此防火牆是否允許透過 22 號 (適用於 Linux 執行個體) 或 3389 號埠 (適用於 Windows 執行個體),來傳入流量到您的電腦或從您的電腦傳出。
確認執行個體是否具備公有 IPv4 地址。
如果沒有,您可建立彈性 IP 地址與您執行個體的關聯。如需更多詳細資訊,請參閱 彈性 IP 地址。
檢查執行個體上的 CPU 負載,伺服器可能會過載。
AWS 會自動提供諸如 Amazon CloudWatch 指標和執行個體狀態等資料,您可以用來了解執行個體上的 CPU 負載量,而且在必要時,調整處理負載的方式。如需更多詳細資訊,請參閱 使用 CloudWatch 監控您的執行個體。
-
如果負載會變動不定,您可以利用 Auto Scaling
和 Elastic Load Balancing 功能,來自動擴展或縮減執行個體的規模。 -
如果負載穩定增加,您可以改用較大容量的執行個體類型。如需更多詳細資訊,請參閱 變更執行個體類型。
若要使用 IPv6 地址來連線到執行個體,請檢察下列項目:
-
與子網具有關聯的路由表,必須包含讓 IPv6 流量 (
::/0
) 傳到網際網路閘道的路由路徑。 -
安全群組規則必須允許從本機的 IPv6 地址,透過適當的通訊埠傳入流量 (Linux 為 22 號埠;Windows 為 3389 號埠)。
-
網路 ACL 必須允許外傳和傳入的 IPv6 流量。
-
如果從舊版的 AMI 啟動執行個體,則執行個體可能未針對 DHCPv6 設定 (在網路介面上不會自動辨識 IPv6 地址)。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的在執行個體上設定 IPv6。
-
您的本機電腦必須擁有 IPv6 地址,且必須設定以使用 IPv6。
錯誤:無法載入金鑰 ... 預期為:任一私有金鑰
如果您嘗試連接到您的執行個體並收到錯誤訊息 unable to load key
... Expecting: ANY PRIVATE KEY
,則表示存放私有金鑰的檔案設定不正確。如果私有金鑰檔案以 .pem
結尾,則表示可能仍設定不正確。私有金鑰檔案設定錯誤的可能原因是憑證遺失。
如果私有金鑰檔案設定不正確,請依照以下步驟解決錯誤
-
建立新的金鑰對。如需詳細資訊,請參閱 使用 Amazon EC2 建立金鑰對。
注意
或者,您也可以使用第三方工具來建立新的金鑰對。如需詳細資訊,請參閱 使用第三方工具來建立金鑰對,然後將公有金鑰匯入 Amazon EC2。
-
將新的金鑰對新增到執行個體。如需更多詳細資訊,請參閱 我的私有金鑰遺失。如何連線到我的 Linux 執行個體?。
-
使用新的金鑰對連線至執行個體。
錯誤:伺服器無法辨識使用者金鑰
若如果使用 SSH 連線到執行個體
-
使用
ssh -vvv
,在連線時取得三重 verbose (詳細模式) 的除錯資訊:ssh -vvv -i
path/key-pair-name
.peminstance-user-name
@ec2-203-0-113-25.compute-1.amazonaws.com
下列的輸出範例,示範了在嘗試使用伺服器無法辨識的金鑰來連線到執行個體時,可能會顯示的訊息:
open/ANT/myusername/.ssh/known_hosts). debug2: bits set: 504/1024 debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: boguspem.pem ((nil)) debug1: Authentications that can continue: publickey debug3: start over, passed a different list publickey debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Trying private key: boguspem.pem debug1: read PEM private key done: type RSA debug3: sign_and_send_pubkey: RSA 9c:4c:bc:0c:d0:5c:c7:92:6c:8e:9b:16:e4:43:d8:b2 debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey debug2: we did not send a packet, disable method debug1: No more authentication methods to try. Permission denied (publickey).
如果使用 PuTTY 連線到您的執行個體
-
確認私有金鑰 (.pem) 檔案是否已轉換為 PuTTY (.ppk) 可以辨識的格式。如需有關轉換私有金鑰的詳細資訊,請參閱使用 PuTTY 從 Windows 連線至 Linux 執行個體。
注意
在 PuTTYgen 中,載入私有金鑰,然後選取 Save Private Key (儲存私有金鑰),而非 Generate (產生)。
-
確認您在連線時使用了適當的 AMI 使用者名稱。在 PuTTY Configuration (PuTTY 組態) 視窗的 Host name (主機名稱) 中,輸入使用者的名稱。
用於啟動執行個體的 AMI 預設使用者名稱 Amazon Linux 2023
Amazon Linux 2
Amazon Linux
ec2-user
CentOS centos
或ec2-user
Debian admin
Fedora fedora
或ec2-user
RHEL ec2-user
或root
SUSE ec2-user
或root
Ubuntu ubuntu
Oracle ec2-user
Bitnami bitnami
Rocky Linux rocky
其他 檢查 AMI 提供者 -
確認已建立傳入安全群組的規則,以允許從適當的連接埠傳入流量。如需詳細資訊,請參閱授權從網路存取執行個體。
錯誤:許可遭拒或 [執行個體] 連接埠 22 已關閉連線
若使用 SSH 連線至執行個體,並出現下列任一錯誤:Host key not found in [directory]
、Permission denied (publickey)
、Authentication failed, permission denied
或 Connection closed by [instance] port 22
,請確認您在連線時使用了適當的 AMI 使用者名稱,且已為執行個體指定正確的私有金鑰 (.pem)
檔案。
適合的使用者名稱如下:
用於啟動執行個體的 AMI | 預設使用者名稱 |
---|---|
Amazon Linux 2023 Amazon Linux 2 Amazon Linux |
ec2-user
|
CentOS | centos 或 ec2-user |
Debian | admin |
Fedora | fedora 或 ec2-user |
RHEL | ec2-user 或 root |
SUSE | ec2-user 或 root |
Ubuntu | ubuntu |
Oracle | ec2-user |
Bitnami | bitnami |
Rocky Linux | rocky |
其他 | 檢查 AMI 提供者 |
例如,若要使用 SSH 用戶端來連接至 Amazon Linux 執行個體,請使用下列命令:
ssh -i
/path/key-pair-name
.peminstance-user-name
@ec2-203-0-113-25.compute-1.amazonaws.com
請確認在啟動執行個體時,所使用的私有金鑰檔案可對應到您所選取的金鑰對。
如果產生自己的金鑰對,請確定金鑰產生器已經過設定,可產生 RSA 金鑰。DSA 金鑰是不被接受的。
如果收到 Permission denied (publickey)
錯誤,而上述的所有情況皆不適用 (例如,先前可以連線),可能是對執行個體家目錄的權限已變更。對 /home/
的權限必須限定為只指派給擁有者。instance-user-name
/.ssh/authorized_keys
在執行個體上確認權限
-
停止執行個體並分離根磁碟區。如需詳細資訊,請參閱停止和啟動執行個體及將 Amazon EBS 磁碟區與 Linux 執行個體分開。
-
在目前執行個體所在的同一個可用區域中,啟動暫時執行個體 (使用與目前執行個體所用 AMI 類似的或相同的 AMI),然後將根磁碟區連結到暫時執行個體。如需更多詳細資訊,請參閱 將 Amazon EBS 磁碟區連接至執行個體。
-
連線到暫時執行個體、建立掛載點,然後掛載已連結的磁碟區。如需更多詳細資訊,請參閱 使 Amazon EBS 磁碟區可在 Linux 上使用。
-
從暫時執行個體,檢查已連結磁碟區
/home/
目錄的權限。必要時,請依照下列方式來調整權限:instance-user-name
/[ec2-user ~]$
chmod 600
mount_point
/home/instance-user-name
/.ssh/authorized_keys[ec2-user ~]$
chmod 700
mount_point
/home/instance-user-name
/.ssh[ec2-user ~]$
chmod 700
mount_point
/home/instance-user-name
-
取消掛載磁碟區、將該磁碟區從暫時執行個體分離,然後再重新連結到原始執行個體。請務必為根磁碟區指定正確的裝置名稱,例如
/dev/xvda
。 -
啟動執行個體。如果不再需要暫時執行個體,您可以將其終止。
錯誤:未受保護的私有金鑰檔案
私有金鑰檔案必須受到保護,不讓其他任何使用者讀取或寫入。如果私有金鑰可以讓除了您以外的任何人讀取或寫入,SSH 會忽略您的金鑰,而且會出現下列的警告訊息。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777
for '.ssh/my_private_key.pem
' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/my_private_key.pem
Permission denied (publickey).
如果在您試著登入執行個體時,出現類似的訊息,請檢驗該錯誤訊息的第一行,來確認是否針對執行個體使用了正確的公有金鑰。上列的範例使用私有金鑰 .ssh/my_private_key.pem
,此金鑰具有 0777
的檔案權限,可讓所有人讀取或寫入此檔案。這種權限等級非常地不安全,因此 SSH 會忽略此金鑰。
如果從 macOS 或 Linux 連線,請執行下列命令來修正此錯誤,替換私有金鑰檔案的路徑。
[ec2-user ~]$
chmod 0400
.ssh/my_private_key.pem
如果從 Windows 連線,請在您的本機電腦上執行下列步驟。
導覽至 .pem 檔案。
在 .pem 檔案上按一下右鍵,然後選取 Properties (屬性)。
選擇 Security (安全) 標籤。
選取 Advanced (進階)。
請確認您是檔案的擁有者。如果不是,請將擁有者變更為您的使用者名稱。
選取 Disable inheritance (停用繼承) 和 Remove all inherited permissions from this object (移除此物件的所有繼承許可)。
選取 Add (新增)、Select a principal (選取委託人),輸入您的使用者名稱,然後選取 OK (確定)。
從 Permission Entry (許可項目) 視窗中,授予 Read (讀取) 許可,然後選取 OK (確定)。
-
按一下 Apply (套用),以確保儲存所有設定。
選取 OK (確定) 關閉 Advanced Security Settings (進階安全設定) 視窗。
選取 OK (確定) 關閉 Properties (屬性) 視窗。
您應該能夠透過 SSH 從 Windows 連線至 Linux 執行個體。
在 Windows 命令提示中執行下列命令。
在命令提示中,導覽至 .pem 檔案的檔案路徑位置。
執行下列命令,重設並移除明確許可:
icacls.exe
$path
/reset執行下列命令,對目前使用者授予讀取許可:
icacls.exe
$path
/GRANT:R "$($env:USERNAME):(R)
"執行下列命令以停用繼承並移除繼承的許可。
icacls.exe
$path
/inheritance:r您應該能夠透過 SSH 從 Windows 連線至 Linux 執行個體。
錯誤:私有金鑰的開頭必須為「-----BEGIN RSA PRIVATE KEY-----」,結尾為「-----END RSA PRIVATE KEY-----」
如果您使用第三方工具 (例如 ssh-keygen) 來建立 RSA 金鑰對,則它會以 OpenSSH 金鑰格式產生私有金鑰。當您連線到您的執行個體時,如果以 OpenSSH 格式使用私有金鑰來解密密碼,則您會得到錯誤 Private key must begin with "-----BEGIN RSA PRIVATE KEY-----" and end with "-----END RSA
PRIVATE KEY-----"
。
若要解決錯誤,私有金鑰必須採用 PEM 格式。使用下列命令,以 PEM 格式建立私有金鑰:
ssh-keygen -m PEM
錯誤:伺服器拒絕了我們的金鑰,或是沒有可用的支援驗證方法
如果使用 PuTTY 來連線到執行個體,並出現下列任一錯誤:Error: Server refused our key (錯誤:伺服器拒絕了我們的金鑰)
或 Error: No supported authentication methods available (錯誤:沒有可用的支援驗證方法)
,請確認您在連線時使用了適當的 AMI 使用者名稱。在 PuTTY Configuration (PuTTY 組態) 視窗的 User name (使用者名稱) 中輸入使用者名稱。
適合的使用者名稱如下:
用於啟動執行個體的 AMI | 預設使用者名稱 |
---|---|
Amazon Linux 2023 Amazon Linux 2 Amazon Linux |
ec2-user
|
CentOS | centos 或 ec2-user |
Debian | admin |
Fedora | fedora 或 ec2-user |
RHEL | ec2-user 或 root |
SUSE | ec2-user 或 root |
Ubuntu | ubuntu |
Oracle | ec2-user |
Bitnami | bitnami |
Rocky Linux | rocky |
其他 | 檢查 AMI 提供者 |
您也應該確認:
-
使用的 PuTTY 是最新版。如需詳細資訊,請參閱 PuTTY 網頁
。 -
您的私有金鑰 (.pem) 檔案是否已正確轉換為 PuTTY (.ppk) 可以辨識的格式。如需有關轉換私有金鑰的詳細資訊,請參閱使用 PuTTY 從 Windows 連線至 Linux 執行個體。
無法對執行個體執行 Ping 動作
ping
命令是一種 ICMP 傳輸流量 — 如果無法對執行個體執行 ping 命令,請確定傳入安全群組的規則,可允許 ICMP 傳輸流量接收從所有來源,或是從您用來發出指令的電腦或執行個體,所傳送的 Echo Request
訊息。
如果無法從執行個體發出 ping
指令,請確定安全群組外傳的規則,可允許 ICMP 傳輸流量,來讓 Echo
Request
訊息傳到所有目的地,或是傳到您想要對其執行 ping 的主機。
Ping
命令也可能會遭到防火牆封鎖,或因為網路延遲或硬體問題而逾時。如需進一步疑難排解的協助,請洽詢您的區域網路或系統管理員。
錯誤:伺服器意外關閉網路連線
如果您使用 PuTTY 連接到執行個體,並且收到錯誤「伺服器意外關閉網路連線」,請驗證您在 PuTTY 組態的連線頁面上是否已啟用保持連線,以避免中斷連線。部分伺服器在指定的期間內未收到任何資料時會中斷連接用戶端。將 Seconds between keepalives (保持連線之間的秒數) 設為 59 秒。
如果您在啟用保持連線之後仍遇到問題,請在 PuTTY 組態的連線頁面上嘗試停用 Nagle 的演算法。
錯誤:EC2 Instance Connect 的主機金鑰驗證失敗
如果您輪換執行個體主機金鑰,新的主機金鑰不會自動更新至 AWS 信任的主機金鑰資料庫。因此當您嘗試使用 EC2 Instance Connect 以瀏覽器為基礎的用戶端連線到您的執行個體時,這會導致主機金鑰驗證失敗,而無法連線到您的執行個體。
若要解決此錯誤,您必須在 eic_harvest_hostkeys
執行個體上執行指令碼,以將新的主機金鑰上傳至 EC2 Instance Connect。指令碼位於 Amazon Linux 2 執行個體上的 /opt/aws/bin/
和 Ubuntu 執行個體上的 /usr/share/ec2-instance-connect/
。
無法使用 EC2 Instance Connect 連線至 Ubuntu 執行個體
如果您使用 EC2 Instance Connect 連線至 Ubuntu 執行個體,並且在嘗試連線時出現錯誤,可以使用以下資訊嘗試修復問題。
可能的原因
該執行個體的 ec2-instance-connect
套件並非最新版本。
解決方案
如下所示將該執行個體的 ec2-instance-connect
套件更新至最新版本:
-
使用 EC2 Instance Connect 以外的方法連線至您的執行個體。
-
在您的執行個體上執行以下命令,將
ec2-instance-connect
套件更新至最新版本。apt update && apt upgrade
我的私有金鑰遺失。如何連線到我的 Linux 執行個體?
如果遺失了 EBS 後端執行個體的私有金鑰,您可以重新獲得對執行個體的存取權限。您必須停止執行個體、中斷其根磁碟區的連結,並將該磁碟區做為資料磁碟區連接至其他執行個體、使用新的公有金鑰修改 authorized_keys
檔案、將磁碟區移回到原始的執行個體,然後重新啟動執行個體。關於啟動、連線到和停用執行個體,詳細資訊請參閱 執行個體生命週期。
僅具有 EBS 根磁碟區的執行個體支援此程序。如果根裝置是執行個體存放區磁碟區,則無法使用此程序來重新獲取執行個體的存取權;您必須具備私有金鑰,才能連線到執行個體。若要確定執行個體的根裝置類型,請開啟 Amazon EC2 主控台,選擇執行個體,選取執行個體,選擇儲存索引標籤,然後在根裝置詳細資訊區段中,檢查根裝置類型的值。
此值為 EBS
或 INSTANCE-STORE
。
除了下列步驟之外,遺失私有金鑰時還有其他方法可以連線到 Linux 執行個體。如需詳細資訊,請參閱如果我在初次啟動後遺失了 SSH 金鑰對,該如何連接到 Amazon EC2 執行個體?
使用不同的金鑰對以連線到 EBS 後端執行個體的步驟
步驟 1:建立新的金鑰對
使用 Amazon EC2 主控台或第三方工具來產生新的金鑰對。如果希望新金鑰對的名稱,和已遺失私有金鑰的相同,您必須先刪除現有的金鑰對。如需建立新金鑰對的詳細資訊,請參閱使用 Amazon EC2 建立金鑰對或使用第三方工具來建立金鑰對,然後將公有金鑰匯入 Amazon EC2。
步驟 2:取得關於原始執行個體及其根磁碟區的資訊
請儲存下列資訊,完成此程序將會需要用到這些資訊。
取得原始執行個體的相關資訊
-
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格中選取 Instances (執行個體),然後選取您要連線的執行個體。(我們會將此執行個體稱為「原始」執行個體。)
-
在 Details (詳細資訊) 索引標籤上記下執行個體 ID 和 AMI ID。
-
在 網路 索引標籤上記下 「可用區域」。
-
在 Storage (儲存) 索引標籤下的 根裝置名稱,記下根磁碟區的裝置名稱 (例如:
/dev/xvda
)。接著,在 區塊型儲存裝置 下找出這個裝置名稱,並記下磁碟區 ID (例如:vol-0a1234b5678c910de)。
步驟 3:停止原始執行個體
選擇 Instance state (執行個體狀態)、Stop instance (停止執行個體)。如果此選項已停用,則執行個體已停止或其根設備是執行個體存放磁碟區。
警告
停止執行個體時,在任何執行個體存放區磁碟區的資料都會清除。若要保留執行個體存放區磁碟區的資料,請將資料備份至持久性儲存。
步驟 4:啟動暫時執行個體
步驟 5:將根磁碟區與原始執行個體分離,並將其連接到暫時執行個體
-
在導覽窗格中選取 Volumes (磁碟區),接著再選取原始執行個體的根裝置磁碟區 (您已在先前的步驟中記下其磁碟區 ID)。選取 Actions (動作)、Detach Volume (分離磁碟區),然後選取 Detach (分離)。等待磁碟區的狀態變成
available
。(您可能需要選取 Refresh (重新整理) 圖示。) -
在已選取磁碟區的狀態下,選取 Actions (動作),然後再選取 Attach volume (連接磁碟區)。選取暫時執行個體的執行個體 ID、記下 Device name (裝置名稱) 中的指定裝置名稱 (例如:
/dev/sdf
),接著再選取 Attach volume (連接磁碟區)。注意
如果您是從 AWS Marketplace AMI 啟動原始執行個體,而且磁碟區包含 AWS Marketplace 程式碼,則您必須先停止暫時執行個體,才能連結磁碟區。
步驟 6:在掛載到暫時執行個體的原始磁碟區上,將新的公有金鑰新增至的 authorized_keys
-
連線到暫時執行個體。
-
從暫時執行個體掛載已連結到執行個體的磁碟區,如此您就能存取其檔案系統。例如,如果裝置名稱為
/dev/sdf
,請使用下列的指令來將磁碟區掛載為/mnt/tempvol
。注意
在執行個體上所顯示的裝置名稱可能會有不同。例如,掛載為
/dev/sdf
的裝置,在執行個體上可能會顯示為/dev/xvdf
。Red Hat 的某些版本 (或是其變體版本,例如 CentOS) 甚至可能會將結尾的字母增加 4 個字元,其中/dev/sd
會變成f
/dev/xvd
。k
-
使用 lsblk 命令來查看磁碟區是否已分割。
[ec2-user ~]$
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 101G 0 disk └─xvdf1 202:81 0 101G 0 part xvdg 202:96 0 30G 0 disk
在上述的範例中,
/dev/xvda
和/dev/xvdf
為分割的磁碟區,而/dev/xvdg
則不是。如果磁碟區已分割,則在接下來的步驟中,您會掛載 (/dev/xvdf1)
而非原始裝置 (/dev/xvdf
)。 -
建立暫時的目錄來掛載磁碟區。
[ec2-user ~]$
sudo mkdir /mnt/tempvol
-
使用您先前找出的磁碟區名稱或裝置名稱,將磁碟區 (或分割磁碟區) 掛載至暫時掛載點。必要命令取決於作業系統的檔案系統。請注意,在執行個體上所顯示的設備名稱可能會有不同。如需詳細資訊,請參閱步驟 6 中的 note。
-
Amazon Linux、Ubuntu 和 Debian
[ec2-user ~]$
sudo mount /dev/
xvdf1
/mnt/tempvol -
Amazon Linux 2、CentOS、SUSE Linux 12 和 RHEL 7.x
[ec2-user ~]$
sudo mount -o nouuid /dev/
xvdf1
/mnt/tempvol
-
注意
如果您收到檔案系統毀損的錯誤,請執行下列命令,使用 fsck 公用程式來檢查檔案系統並修復任何問題:
[ec2-user ~]$
sudo fsck /dev/
xvdf1
-
-
從暫時執行個體使用下列的指令,用暫時執行個體的
authorized_keys
所產生的新公有金鑰,來更新已掛載磁碟區上的authorized_keys
。重要
下列的範例使用 Amazon Linux 使用者名稱
ec2-user
。您可以需要換成不同的使用者名稱,例如適用於 Ubuntu 執行個體的ubuntu
。[ec2-user ~]$
cp .ssh/authorized_keys /mnt/tempvol/home/
ec2-user
/.ssh/authorized_keys如果此項複製動作成功,您就可以進行下一個步驟。
(選用) 否則,如果您沒有編輯
/mnt/tempvol
中的檔案的許可,必須使用 sudo 來更新檔案,然後檢查對於該檔案的許可,以確認您是否能夠登入原始執行個體。使用下列命令以檢查對檔案的許可。[ec2-user ~]$
sudo ls -l /mnt/tempvol/home/ec2-user/.ssh
total 4 -rw------- 1
222 500
398 Sep 13 22:54 authorized_keys在本範例輸出中,
222
為使用者 ID,而500
為群組 ID。接下來,請使用 sudo 來重新執行先前失敗的複製命令。[ec2-user ~]$
sudo cp .ssh/authorized_keys /mnt/tempvol/home/
ec2-user
/.ssh/authorized_keys再次執行下列命令,以確定許可是否已變更。
[ec2-user ~]$
sudo ls -l /mnt/tempvol/home/
ec2-user
/.ssh如果使用者 ID 和群組 ID 已變更,請使用下列命令來還原這些 ID。
[ec2-user ~]$
sudo chown
222:500
/mnt/tempvol/home/ec2-user
/.ssh/authorized_keys
步驟 7:取消掛載原始磁碟區,並將該磁碟區從暫時執行個體分離,然後再重新連接到原始執行個體
-
從暫時執行個體取消掛載已連結的磁碟區,如此您就能將該磁碟區重新連結到原始執行個體。例如,使用以下命令來取消掛載位於
/mnt/tempvol
的磁碟區。[ec2-user ~]$
sudo umount /mnt/tempvol
-
將磁碟區從暫時執行個體分離 (您在上一步已卸載該磁碟區):從 Amazon EC2 主控台,選取導覽窗格中的 Volumes (磁碟區),選取原始執行個體的根裝置磁碟區 (您在上一步已記下磁碟區 ID),選取 Actions (動作)、Detach volume (分離磁碟區),接著再選取 Detach (分離)。等待磁碟區的狀態變成
available
。(您可能需要選取 Refresh (重新整理) 圖示。) -
將磁碟區重新連接到原始執行個體:在已選取磁碟區的狀態下,選取 Actions (動作)、Attach volume (連接磁碟區)。選取原始執行個體的執行個體 ID、指定您先前在步驟 2 中為原始根裝置連接 (
/dev/sda1
或/dev/xvda
) 記錄的裝置名稱,然後選取 Attach volume (連接磁碟區)。重要
如果您並未指定與原始連結相同的裝置名稱,則無法啟動原始執行個體。Amazon EC2 預期根裝置磁碟區位於
sda1
或/dev/xvda
。
步驟 8:使用新的金鑰對連線到原始執行個體
選取原始執行個體,然後依序選取 Instance state (執行個體狀態)、Start instance (啟動執行個體)。在執行個體進入 running
狀態之後,您可以使用新金鑰對的私有金鑰檔案,來連線到該執行個體。
注意
如果新金鑰對的名稱和對應的私有金鑰檔案,與原始金鑰對的名稱不同,請務必在連線到執行個體時,指定新私有金鑰檔案的名稱。
步驟 9:清理
(選用) 如果不需再使用時,您可以終止暫時執行個體。選取暫時執行個體,再依序選取 Instance state (執行個體狀態)、Terminate instance (終止執行個體)。