聯機到 Azure 中 Linux VM 問題的詳細 SSH 疑難解答步驟
SSH 用戶端可能無法連線到 VM 上的 SSH 服務有許多可能的原因。 如果您已遵循更 一般的 SSH 疑難解答步驟,則需要進一步針對連線問題進行疑難解答。 本文會引導您完成詳細的疑難解答步驟,以判斷 SSH 連線失敗的位置,以及如何解決此問題。
採取初步步驟
下圖顯示所涉及的元件。
下列步驟可協助您找出失敗的來源,並找出解決方案或因應措施。
在入口網站中檢查 VM 的狀態。 在 [Azure 入口網站 中,選取 [虛擬機>VM 名稱]。
VM 的狀態窗格應該會顯示 [ 執行中]。 向下捲動以顯示計算、記憶體和網路資源的最近活動。
選 取 [設定] 以檢查端點、IP 位址、網路安全組和其他設定。
VM 應該為 SSH 流量定義端點,您可以在 端點 或 網路安全組中檢視此端點。 使用 Resource Manager 建立之 VM 中的端點會儲存在網路安全組中。 確認規則已套用至網路安全組,並在子網中參考。
若要確認網路連線能力,請檢查已設定的端點,並查看您是否可以透過另一個通訊協定連線到 VM,例如 HTTP 或其他服務。
在這些步驟之後,請再試一次 SSH 連線。
尋找問題的來源
您電腦上的 SSH 用戶端可能因為下列區域的問題或設定錯誤而無法連線到 Azure VM 上的 SSH 服務:
來源 1:SSH 用戶端電腦
若要排除您的電腦作為失敗來源,請確認它可以將 SSH 連線到另一部以 Linux 為基礎的內部部署電腦。
如果連線失敗,請檢查電腦上的下列問題:
- 封鎖 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 進行連線。
如果您在相同的虛擬網路中沒有另一個 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型虛擬機。
再次嘗試從您的電腦連線。 如果仍然失敗,以下是一些可能的問題:
- SSH 服務未在目標虛擬機上執行。
- SSH 服務未接聽 TCP 連接埠 22。 若要測試,請在本機計算機上安裝 telnet 用戶端,然後執行 “telnet cloudServiceName.cloudapp.net 22”。 此步驟會判斷虛擬機是否允許對 SSH 端點進行輸入和輸出通訊。
- 目標虛擬機上的本機防火牆具有防止輸入或輸出SSH流量的規則。
- 在 Azure 虛擬機上執行的入侵檢測或網路監視軟體會阻止 SSH 連線。
其他資源
如需針對應用程式存取進行疑難解答的詳細資訊,請參閱 針對在 Azure 虛擬機上執行之應用程式的存取進行疑難解答。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將推出:在 2024 年,我們將隨著內容的意見反應機制逐步淘汰 GitHub 問題,並以新的意見反應系統來取代。 如需詳細資訊,請參閱提交並檢視相關的意見反應