聯機到 Azure 中 Linux VM 問題的詳細 SSH 疑難解答步驟

SSH 用戶端可能無法連線到 VM 上的 SSH 服務有許多可能的原因。 如果您已遵循更 一般的 SSH 疑難解答步驟,則需要進一步針對連線問題進行疑難解答。 本文會引導您完成詳細的疑難解答步驟,以判斷 SSH 連線失敗的位置,以及如何解決此問題。

採取初步步驟

下圖顯示所涉及的元件。

顯示 SSH 服務元件的圖表。

下列步驟可協助您找出失敗的來源,並找出解決方案或因應措施。

  1. 在入口網站中檢查 VM 的狀態。 在 [Azure 入口網站 中,選取 [虛擬機>VM 名稱]

    VM 的狀態窗格應該會顯示 [ 執行中]。 向下捲動以顯示計算、記憶體和網路資源的最近活動。

  2. 取 [設定] 以檢查端點、IP 位址、網路安全組和其他設定。

    VM 應該為 SSH 流量定義端點,您可以在 端點網路安全組中檢視此端點。 使用 Resource Manager 建立之 VM 中的端點會儲存在網路安全組中。 確認規則已套用至網路安全組,並在子網中參考。

若要確認網路連線能力,請檢查已設定的端點,並查看您是否可以透過另一個通訊協定連線到 VM,例如 HTTP 或其他服務。

在這些步驟之後,請再試一次 SSH 連線。

尋找問題的來源

您電腦上的 SSH 用戶端可能因為下列區域的問題或設定錯誤而無法連線到 Azure VM 上的 SSH 服務:

來源 1:SSH 用戶端電腦

若要排除您的電腦作為失敗來源,請確認它可以將 SSH 連線到另一部以 Linux 為基礎的內部部署電腦。

醒目提示 SSH 用戶端計算機元件的圖表。

如果連線失敗,請檢查電腦上的下列問題:

  • 封鎖 TCP 22 (輸入或輸出 SSH 流量的本機防火牆設定)
  • 防止 SSH 連線的本機安裝用戶端 Proxy 軟體
  • 防止 SSH 連線的本機安裝網路監視軟體
  • 監視流量或允許/不允許特定流量類型的其他安全性軟體類型

如果其中一個條件適用,請暫時停用軟體,並嘗試與內部部署計算機進行SSH連線,以找出在您的計算機上封鎖連線的原因。 然後與您的網路管理員合作,以更正軟體設定以允許 SSH 連線。

如果您使用憑證驗證,請確定您擁有主目錄中 .ssh 資料夾的這些權限:

  • Chmod 700 ~/.ssh
  • Chmod 644 ~/.ssh/*.pub
  • Chmod 600 ~/.ssh/id_rsa (或是將私鑰儲存在其中的任何其他檔案)
  • Chmod 644 ~/.ssh/known_hosts (包含您透過 SSH 連線的主機)

來源 2:組織邊緣裝置

若要排除組織邊緣裝置作為失敗來源,請確認直接連線到因特網的計算機可以透過 SSH 連線到您的 Azure VM。 如果您要透過站對站 VPN 或 Azure ExpressRoute 連線存取 VM,請跳至 來源 4:網路安全組

醒目提示組織邊緣裝置的圖表。

如果您沒有直接連線到因特網的計算機,請在自己的資源群組或雲端服務中建立新的 Azure VM,並使用該新的 VM。 如需詳細資訊,請 參閱在 Azure 中建立執行 Linux 的虛擬機。 當您完成測試時,請刪除資源群組或 VM 和雲端服務。

如果您可以與直接連線到因特網的電腦建立 SSH 連線,請檢查組織邊緣裝置的下列專案:

  • 透過因特網封鎖 SSH 流量的內部防火牆
  • 防止 SSH 連線的 Proxy 伺服器
  • 入侵偵測或網路監視軟體在您邊緣網路中防止 SSH 連線的裝置上執行

請與您的網路管理員合作,更正組織邊緣裝置的設定,以允許透過因特網的SSH流量。

來源 3:雲端服務端點和 ACL

重要事項

傳統 VM 將於 2023 年 9 月 1 日淘汰

如果您使用 ASM 的 IaaS 資源,請在 2023 年 9 月 1 日前完成移轉。 我們鼓勵您更快進行切換,以利用 Azure Resource Manager 中的許多功能增強功能。

如需詳細資訊,請參閱在 2023 年 9 月 1 日前將 IaaS 資源移轉至 Azure Resource Manager

注意事項

此來源僅適用於使用傳統部署模型所建立的 VM。 針對使用 Resource Manager 建立的 VM,請跳至來源 4:網路安全組

若要排除雲端服務端點和 ACL 作為失敗來源,請確認相同虛擬網路中的另一個 Azure VM 可以使用 SSH 進行連線。

醒目提示雲端服務端點和 ACL 的圖表。

如果您在相同的虛擬網路中沒有另一個 VM,您可以輕鬆地建立一個 VM。 如需詳細資訊,請參閱 使用 CLI 在 Azure 上建立 Linux VM。 當您完成測試時,請刪除額外的 VM。

如果您可以在相同的虛擬網路中建立與 VM 的 SSH 連線,請檢查下列區域:

  • 目標 VM 上 SSH 流量的端點組態。 端點的私人 TCP 連接埠應符合 VM 上 SSH 服務正在接聽的 TCP 連接埠。 (預設埠為 22) 。 選取 [虛擬機>VM 名稱>>設定端點],以確認 Azure 入口網站 中的 SSH TCP連接埠號碼。
  • 目標虛擬機上SSH流量端點的 ACL。 ACL 可讓您根據其來源 IP 位址,指定允許或拒絕來自因特網的連入流量。 設定錯誤的 ACL 可防止連入至端點的 SSH 流量。 檢查您的 ACL,以確保允許來自 Proxy 或其他邊緣伺服器之公用 IP 位址的連入流量。 如需詳細資訊,請 參閱關於網路訪問控制清單 (ACL)

若要排除端點作為問題的來源,請移除目前的端點、建立另一個端點,並針對) 的公用和私人埠號碼 (TCP 連接埠 22 指定 SSH 名稱。 如需詳細資訊, 請參閱在 Azure 中的虛擬機上設定端點

來源 4:網路安全組

網路安全組可讓您更精細地控制允許的輸入和輸出流量。 您可以在 Azure 虛擬網路中建立跨越子網和雲端服務的規則。 檢查網路安全組規則,以確保允許從因特網來回的SSH流量。 如需詳細資訊,請 參閱關於網路安全組

您也可以使用IP驗證來驗證 NSG 組態。 如需詳細資訊,請參閱 Azure 網路監視概觀

來源 5:以 Linux 為基礎的 Azure 虛擬機

最後一個可能問題的來源是 Azure 虛擬機本身。

醒目提示Linux型 Azure 虛擬機的圖表。

如果您尚未這麼做,請依照指示 重設密碼Linux型虛擬機

再次嘗試從您的電腦連線。 如果仍然失敗,以下是一些可能的問題:

  • SSH 服務未在目標虛擬機上執行。
  • SSH 服務未接聽 TCP 連接埠 22。 若要測試,請在本機計算機上安裝 telnet 用戶端,然後執行 “telnet cloudServiceName.cloudapp.net 22”。 此步驟會判斷虛擬機是否允許對 SSH 端點進行輸入和輸出通訊。
  • 目標虛擬機上的本機防火牆具有防止輸入或輸出SSH流量的規則。
  • 在 Azure 虛擬機上執行的入侵檢測或網路監視軟體會阻止 SSH 連線。

其他資源

如需針對應用程式存取進行疑難解答的詳細資訊,請參閱 針對在 Azure 虛擬機上執行之應用程式的存取進行疑難解答

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群