Azure上的Linux虛擬機突然無法透過SSH遠端登入,可能原因包含網路故障、防火牆誤配、SSH服務異常、金鑰權限錯誤等。當無法登入時,如何診斷與修復?本文提供分層排查步驟與Azure專屬緊急修復工具。
TCP 22(或自訂SSH埠)已允許來自你IP的入站流量。telnet <VM公網IP> 22或nc -zv <IP> 22測試埠口連通性。ssh -vvv user@ip啟用詳細除錯模式,觀察金鑰交換、認證階段的錯誤訊息。若VM已安裝Azure Linux Agent (waagent),可透過Azure CLI或入口網站執行VMAccess擴充功能重置SSH設定、修復金鑰、重設密碼、甚至建立新sudo使用者,無需登入VM即可操作。
# 重置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)"
mount /dev/sdc1 /mnt(視實際裝置名稱調整)。/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。若以上皆無效,可透過Azure支援票證聯繫微軟/世紀互聯工程師:
建議平時啟用啟動診斷與序列主控台,關鍵時刻能直接查看核心日誌,大幅縮短排查時間。