首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Azure Linux虛擬機無法SSH遠端連線?完整排查指南與緊急修復方案

     編輯:程式設計綜合問答

Azure上的Linux虛擬機突然無法透過SSH遠端登入,可能原因包含網路故障、防火牆誤配、SSH服務異常、金鑰權限錯誤等。當無法登入時,如何診斷與修復?本文提供分層排查步驟與Azure專屬緊急修復工具。

第一層:Azure入口網站側邊欄檢查

  1. 登入Azure入口網站,確認虛擬機狀態為「執行中」。
  2. 查看「啟動診斷」截圖與序列主控台輸出,判斷作業系統是否正常啟動、是否卡在維護模式。
  3. 檢查「網路」分頁的輸入連接埠規則,確認TCP 22(或自訂SSH埠)已允許來自你IP的入站流量。
  4. 查看「有效安全性規則」,排除NSG或ASG誤封鎖。

第二層:本地端網路與用戶端排查

  • 使用telnet <VM公網IP> 22或nc -zv <IP> 22測試埠口連通性。
  • 嘗試ssh -vvv user@ip啟用詳細除錯模式,觀察金鑰交換、認證階段的錯誤訊息。
  • 確認本地防火牆/防毒軟體未攔截出站SSH連線。
  • 嘗試使用不同SSH用戶端(PuTTY、MobaXterm、Windows Terminal、VS Code Remote-SSH)。

第三層:Azure專屬緊急修復——VMAccess擴充功能

若VM已安裝Azure Linux Agent (waagent),可透過Azure CLI或入口網站執行VMAccess擴充功能重置SSH設定、修復金鑰、重設密碼、甚至建立新sudo使用者,無需登入VM即可操作。

Azure CLI範例

# 重置SSH設定(重新產生host key、修復sshd_config權限)
az vm extension set \
  --resource-group MyResourceGroup \
  --vm-name MyLinuxVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.4 \
  --settings '{"reset_ssh": true}'

# 重設使用者密碼或新增SSH公鑰
az vm user update \
  --resource-group MyResourceGroup \
  --name MyLinuxVM \
  --username azureuser \
  --password 'NewComplexPassw0rd!'
  # 或 --ssh-key-value "$(cat ~/.ssh/id_rsa.pub)"

第四層:掛載OS磁碟離線修復(終極手段)

  1. 在同一資源群組/區域建立一臨時救援VM(同發行版)。
  2. 將故障VM的OS磁碟卸離,掛載至救援VM(資料磁碟模式)。
  3. 掛載分區:mount /dev/sdc1 /mnt(視實際裝置名稱調整)。
  4. 修復常見問題:
    • /mnt/etc/ssh/sshd_config:確認PermitRootLogin、PubkeyAuthentication、Port設定正確。
    • /mnt/etc/fstab:移除錯誤掛載點,避免開機進入緊急模式。
    • /mnt/etc/passwd/shadow:重設root密碼或解鎖帳號。
    • /mnt/root/.ssh/authorized_keys:修正權限chmod 600、擁有者chown root:root。
  5. 卸載磁碟,重新掛回原VM,啟動驗證。

尋求官方支援

若以上皆無效,可透過Azure支援票證聯繫微軟/世紀互聯工程師:

建議平時啟用啟動診斷與序列主控台,關鍵時刻能直接查看核心日誌,大幅縮短排查時間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved