使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

為什麼我在使用瀏覽器型 SSH 主控台存取 Lightsail 執行個體時,會收到錯誤?

3 分的閱讀內容
0

當我使用以瀏覽器為基礎的 SSH 主控台連線到 Amazon Lightsail 執行個體時,收到 UPSTREAM_ERROR [515]、UPSTREAM_NOT_FOUND [519] 或 CLIENT_UNAUTHORIZED [769] 訊息。

簡短說明

如果您在連線至 Lightsail 執行個體時收到錯誤訊息,且錯誤與 SSH 有關,則您可能會看到下列其中一則訊息:

  • "Your instance encountered an error and has closed the connection.Try again or contact customer support.UPSTREAM_ERROR [515]"
  • "An error occurred and we were unable to connect or stay connected to your instance.If this instance has just started up, try again in a minute or two.UPSTREAM_NOT_FOUND [519]"
  • "Login failed.If this instance has just started up, try again in a minute or two.CLIENT_UNAUTHORIZED [769]"

UPSTREAM_ERROR [515]UPSTREAM_NOT_FOUND [519] 錯誤表示,在使用 SSH 時,無法連線到您的 Lightsail 執行個體。造成這些錯誤的常見原因如下:

  • 執行個體啟動失敗、執行個體狀態檢查失敗,或執行個體上的資源使用過度。
  • 作業系統層級的防火牆封鎖 SSH 連接埠的存取。
  • SSH 連接埠 (22) 不是預設的連接埠。
  • SSH 服務已關閉。

CLIENT_UNAUTHORIZED [769] 錯誤表示,您的 Lightsail 執行個體有 SSH 身分驗證問題。造成此錯誤的常見原因如下:

  • /etc/ssh/lightsail_instance_ca.pub 中的 Lightsail 系統金鑰組態錯誤。
  • 您已將 Ubuntu 執行個體從舊版升級到 20.04 或更新版本。

解決方案

執行個體啟動失敗、執行個體狀態檢查失敗,或執行個體上的資源使用過度

檢視執行個體指標,以判斷執行個體未能通過系統狀態檢查,還是執行個體狀態檢查。

系統狀態檢查

如果系統狀態檢查失敗,則表示執行個體的基礎硬體有問題。若要修正此問題,請先停止再重新啟動執行個體,將執行個體移轉到狀況良好的硬體。

**警告:**執行個體的公有 IP 位址會在每次停止並啟動執行個體後變更。如果您希望執行個體每次停止和啟動時,其 IP 位址都不會改變,請在停止執行個體之前連接靜態 IP 位址

執行個體狀態檢查

如果執行個體狀態檢查失敗,則可能是作業系統層級的問題造成開機錯誤。或者,執行個體的資源 (例如 CPU 或記憶體) 可能使用過度。如需疑難排解步驟,請參閱如何對導致 Lightsail 執行個體無回應的常見問題進行疑難排解?

作業系統層級的防火牆封鎖 SSH 連接埠的存取

瀏覽器型 SSH 存取會使用 Amazon 的內部 IP 位址,連線到您的 Lightsail 執行個體。某些作業系統層級的防火牆和存取控制檔案只允許 SSH 存取一組 IP 位址。在這種情況下,您會收到 UPSTREAM_NOT_FOUND [519]UPSTREAM_ERROR [515] 錯誤。如果防火牆徹底封鎖 SSH 存取,也會發生相同問題。

**注意事項:**作業系統層級防火牆的範例包括 Iptables 和 UFW,而控制檔案的範例為 /etc/hosts.deny (在以 cPanel 為基礎的執行個體中託管存取控制)。

若要解決此錯誤,請執行下列其中一個動作:

  • 如果能夠使用終端或 PuTTY 應用程式以 SSH 存取執行個體,則請登入執行個體並從防火牆和 ** /etc/ ** hosts.deny 檔案中移除拒絕規則。
  • 如果您有 cPanel 執行個體,則請存取 WHM 主控台以移除防火牆規則。
  • 如果您無法從終端或 PuTTY 應用程式使用 SSH 連線到執行個體,則請使用啟動指令碼來停用防火牆。您只能在啟動執行個體時新增啟動指令碼。

若要使用啟動指令碼來停用作業系統層級的防火牆、Iptables 和 UFW,請執行下列步驟:

  1. 開啟 Amazon Lightsail 主控台

  2. 建立執行個體的手動快照

  3. 快照索引標籤的手動快照下,選擇新快照旁邊的三個點圖示。

  4. 選擇建立新執行個體

  5. 選取與上一個執行個體相同的可用區域。

  6. 選擇新增啟動指令碼,然後新增下列指令碼。
    **注意事項:**下列範例指令碼會停用 UFW 防火牆、排清所有 iptable 鏈結或防火牆規則,並透過重新命名來停用 /etc/hosts.deny 檔案:

    sudo ufw disable
    sudo iptables -F
    sudo mv /etc/hosts.deny /etc/hosts.deny_backup
    sudo touch /etc/hosts.deny
    sudo systemctl enable sshd
    sudo systemctl restart sshd
  7. 選擇新的執行個體方案,或使用與上一個執行個體相同的方案。

  8. 輸入執行個體的名稱,然後選擇建立執行個體

新執行個體開始執行之後,請等候 10 到 15 分鐘,然後嘗試使用瀏覽器型 SSH 主控台來與其連線。

注意事項:如果上一個執行個體有靜態 IP 位址,則您也可以用在新的執行個體上。分離靜態 IP 位址,然後再從 Lightsail 主控台上的聯網索引標籤,將其連接到新的執行個體。

SSH 服務已關閉

如果 SSH 服務在執行個體上並未執行或作用,則 SSH 連線會失敗,並且您會收到 UPSTREAM_NOT_FOUND [519] 錯誤。若要針對此問題進行疑難排解,請為您的 Lightsail 執行個體設定 AWS Systems Manager Session Manager。然後,在不使用 SSH 服務的情況下存取執行個體,修復 SSH 問題。

SSH 問題的基本疑難排解步驟包括:

  • 視作業系統發行版本而定,檢閱 /var/log/auth.log/var/log/secure 檔案中的 SSH 身分驗證日誌以識別錯誤。
  • 測試 SSH 組態檔案語法,然後更正所有錯誤:
sudo sshd -t
sudo systemctl restart sshd

/etc/ssh/lightsail_instance_ca.pub 中的 Lightsail 系統金鑰組態錯誤

Lightsail 會使用 /etc/ssh/lightsail_instance_ca.pub 中的系統金鑰,來啟用瀏覽器型 SSH 存取。如果此檔案遺失,則 SSH 身分驗證會失敗,並且您會收到 CLIENT_UNAUTHORIZED [769] 錯誤。如果未在 SSH 組態檔案 /etc/ssh/sshd_config 中的 TrustedUserCAKeys 參數內指定 Lightsail 系統金鑰,也會發生相同的錯誤。

如果能夠透過終端或 PuTTY 應用程式以 SSH 連線到執行個體,則請登入執行個體,然後確認 /etc/ssh/sshd_config 檔案存在,且其中包含 ssh-rsa 金鑰。

如果檔案遺失,請使用下列步驟重新建立檔案:

  1. 執行下列命令,並確認您在命令輸出中可取得 ssh-rsa 金鑰:

    sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa
  2. 如果該命令的輸出中傳回 ssh-rsa 金鑰,則執行下列命令將該金鑰複製到 /etc/ssh/lightsail_instance_ca.pub

    sudo sh -c "cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa > /etc/ssh/lightsail_instance_ca.pub"
        sudo sh -c "echo >> /etc/ssh/sshd_config"
        sudo sh -c "echo 'TrustedUserCAKeys /etc/ssh/lightsail_instance_ca.pub' >> /etc/ssh/sshd_config"
        sudo systemctl restart sshd
  3. 如果您沒有從步驟 1 取得 ssh-rsa 金鑰,或如果您無法使用 SSH 連線到執行個體,則請建立執行個體的快照使用該快照啟動新的執行個體。系統便會在執行個體啟動時自動將 Lightsail 系統金鑰新增至伺服器。

您已經從較舊的 Ubuntu 版本升級到 20.04 或更新版本

對於執行 Ubuntu 20.04 或更新版本的執行個體,您必須允許憑證授權單位 (CA) 使用 ssh-rsa 演算法來簽署憑證。否則,身分驗證會失敗,並且您會收到 CLIENT_UNAUTHORIZED [769] 錯誤。在 Ubuntu 20.04 或更新版本的執行個體中,系統預設會允許 CA 使用 ssh-rsa 演算法。但是,如果您將較舊的 Ubuntu 執行個體版本升級到 20.04,則必須手動允許 CA。

若要這麼做,請依照下列步驟執行:

  1. 使用 SSH 用戶端 (例如終端或 PuTTY 應用程式) 連線到執行個體。

  2. 開啟 SSH 組態檔案 (/etc/ssh/sshd_config)。

  3. 根據您的 Ubuntu 執行個體版本,將 CA 參數新增到檔案中:

    如果執行個體版本升級到 Ubuntu 20.04

    手動將 CASignatureAlgorithms 參數行輸入到 sshd_config 檔案:

    $ sudo vi /etc/ssh/sshd_config
    $ cat /etc/ssh/sshd_config | egrep "CASignature"
    CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

    如果執行個體版本升級到 Ubuntu 22.04

    手動將 CASignatureAlgorithmsPubkeyAcceptedAlgorithms 參數行輸入到 sshd_config 檔案:

    $ sudo vi /etc/ssh/sshd_config
    $ cat /etc/ssh/sshd_config | egrep "CASignature|PubkeyAccepted"
    CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa-cert-v01@openssh.com,ssh-rsa
  4. 執行下列命令以驗證 sshd 組態檔內容:

    $ sudo sshd -T
  5. 執行下列命令以重新啟動 sshd 服務:

    $ sudo systemctl restart sshd
AWS 官方
AWS 官方已更新 10 個月前