嘗試連接到 Linux 虛擬機 (VM) 時壳猜,有多種原因可能會導(dǎo)致安全外殼 (SSH) 錯誤勾徽、SSH 連接失敗或被拒絕。 本文幫助用戶找出原因并更正問題统扳。 可以使用 Azure 門戶喘帚、Azure CLI 或適用于 Linux 的 VM 訪問擴展來排查和解決連接問題。
Note
Azure 具有用于創(chuàng)建和處理資源的兩個不同的部署模型:Resource Manager 和經(jīng)典咒钟。 這篇文章介紹了如何使用這兩種模型吹由,但 Azure 建議大多數(shù)最新部署使用 Resource Manager 模型。
如果對本文中的任何內(nèi)容需要更多幫助朱嘴,可以聯(lián)系MSDN Azure 和 Stack Overflow 論壇上的 Azure 專家倾鲫。 或者,也可以提交 Azure 支持事件萍嬉。 請轉(zhuǎn)到Azure 支持站點并選擇“獲取支持”乌昔。 有關(guān)使用 Azure 支持的信息,請閱讀Azure 支持常見問題壤追。
快速故障排除步驟
執(zhí)行每個故障排除步驟后磕道,請嘗試重新連接到 VM。
重置 SSH 配置行冰。
重置用戶的憑據(jù)溺蕉。
確認(rèn)網(wǎng)絡(luò)安全組規(guī)則是否允許 SSH 流量。
確保有一條網(wǎng)絡(luò)安全組規(guī)則允許 SSH 流量(默認(rèn)為 TCP 端口 22)悼做。
在不使用 Azure 負載均衡器的情況下無法使用端口重定向/映射疯特。
重啟 VM。
重新部署 VM肛走。
繼續(xù)閱讀余下的內(nèi)容漓雅,獲取更詳細的故障排除步驟和說明。
排查 SSH 連接問題的可用方法
可以使用以下方法之一重置憑據(jù)或 SSH 配置:
Azure 門戶- 如果需要快速重置 SSH 配置或 SSH 密鑰朽色,并且沒有安裝 Azure 工具故硅,則很適合使用此方法。
Azure CLI 2.0- 如果已打開命令行纵搁,則可以快速重置 SSH 配置或憑據(jù)吃衅。 還可以使用Azure CLI 1.0
Azure VMAccessForLinux 擴展- 創(chuàng)建和重復(fù)使用 json 定義文件來重置 SSH 配置或用戶憑據(jù)。
在執(zhí)行每個故障排除步驟之后腾誉,請嘗試再次連接到 VM徘层。 如果仍然無法連接峻呕,請嘗試下一步。
使用 Azure 門戶
在 Azure 門戶中趣效,可以快速重置 SSH 配置或用戶憑據(jù)瘦癌,無需在本地計算機上安裝任何工具。
在 Azure 門戶中選擇 VM跷敬。 向下滾動到“支持 + 故障排除”部分并選擇“重置密碼”讯私,如以下示例中所示:
重置 SSH 配置
第一步是從“模式”下拉菜單中選擇“Reset configuration only”(如上面的屏幕截圖中所示),并單擊“重置”按鈕西傀。 完成此操作后斤寇,再次嘗試訪問 VM。
重置用戶的 SSH 憑據(jù)
若要重置現(xiàn)有用戶的憑據(jù)拥褂,請從“模式”下拉菜單中選擇“Reset SSH public key”或“Reset password”娘锁,如上面的屏幕截圖中所示。 指定用戶名和 SSH 密鑰或新密碼饺鹃,然后單擊“重置”按鈕莫秆。
還可以通過此菜單在 VM 上創(chuàng)建具有 sudo 權(quán)限的用戶。 輸入新用戶名和關(guān)聯(lián)的密碼或 SSH 密鑰悔详,并單擊“重置”按鈕镊屎。
使用 Azure CLI 2.0
安裝最新的Azure CLI 2.0并使用az login登錄到 Azure 帳戶(如果尚未這樣做)。
Note
在 Azure 中國區(qū)使用 Azure CLI 2.0 之前茄螃,請先運行az cloud set -n AzureChinaCloud來改變云環(huán)境缝驳。如果想切回國際版 Azure,請再次運行az cloud set -n AzureCloud责蝠。
如果創(chuàng)建并上傳了自定義 Linux 磁盤映像,請確保已安裝Azure Linux 代理2.0.5 或更高版本萎庭。 在使用庫映像創(chuàng)建的 VM 上霜医,系統(tǒng)已自動安裝并配置了此訪問擴展。
重置用戶的 SSH 憑據(jù)
以下示例使用az vm user update驳规,在myResourceGroup中名為myVM的 VM 上肴敛, 將myUsername的憑據(jù)重置為myPassword中指定的值。 請如下所示使用自己的值:
Azure CLI復(fù)制
azvmuserupdate--resource-groupmyResourceGroup--namemyVM \--usernamemyUsername--passwordmyPassword
如果使用 SSH 密鑰身份驗證吗购,可以重置給定用戶的 SSH 密鑰医男。 以下示例在myResourceGroup中名為myVM的 VM 上,使用az vm access set-linux-user更新存儲在~/.ssh/id_rsa.pub中的用戶名為myUsername的 SSH 密鑰捻勉。 請如下所示使用自己的值:
Azure CLI復(fù)制
azvmuserupdate--resource-groupmyResourceGroup--namemyVM \--usernamemyUsername--ssh-key-value~/.ssh/id_rsa.pub
使用 VMAccess 擴展
適用于 Linux 的 VM 訪問擴展可以讀入用于定義待執(zhí)行操作的 json 文件镀梭。這些操作包括重置 SSHD、重置 SSH 密鑰或添加用戶踱启。 仍要使用 Azure CLI 調(diào)用 VMAccess 擴展报账,但可以根據(jù)需要在多個 VM 上重復(fù)使用該 json 文件研底。 使用這種方法可以創(chuàng)建 json 文件存儲庫,然后透罢,可以在給定的方案中調(diào)用這些文件榜晦。
重置 SSHD
創(chuàng)建包含以下內(nèi)容的名為settings.json的文件:
JSON復(fù)制
{"reset_ssh":"True"}
使用 Azure CLI,并調(diào)用VMAccessForLinux擴展并指定 json 文件來重置 SSHD 連接羽圃。 以下示例使用az vm extension set乾胶,在myResourceGroup中名為myVM的 VM 上重置 SSHD。 請如下所示使用自己的值:
Azure CLI復(fù)制
azvmextensionset--resource-groupphilmea--vm-nameUbuntu \--nameVMAccessForLinux--publisherMicrosoft.OSTCExtensions--version1.2--settingssettings.json
重置用戶的 SSH 憑據(jù)
如果 SSHD 看上去運行正常朽寞,可以重置給定用戶的憑據(jù)识窿。 若要重置用戶的密碼,請創(chuàng)建名為settings.json的文件愁憔。 以下示例將myUsername的憑據(jù)重置為myPassword中指定的值腕扶。 在settings.json文件中使用自己的值輸入以下行:
JSON復(fù)制
{"username":"myUsername","password":"myPassword"}
若要重置用戶的 SSH 密鑰,請先創(chuàng)建名為settings.json的文件吨掌。 以下示例在myResourceGroup中名為myVM的 VM 上半抱,將myUsername的憑據(jù)重置為myPassword中指定的值。 在settings.json文件中使用自己的值輸入以下行:
JSON復(fù)制
{"username":"myUsername","ssh_key":"mySSHKey"}
創(chuàng)建 json 文件之后膜宋,使用 Azure CLI 調(diào)用VMAccessForLinux擴展并指定 json 文件來重置 SSH 用戶憑據(jù)窿侈。 以下示例重置myResourceGroup中名為myVM的 VM 上的憑據(jù)。 請如下所示使用自己的值:
Azure CLI復(fù)制
azvmextensionset--resource-groupphilmea--vm-nameUbuntu \--nameVMAccessForLinux--publisherMicrosoft.OSTCExtensions--version1.2--settingssettings.json
使用 Azure CLI 1.0
安裝 Azure CLI 1.0 并連接到 Azure 訂閱(如果尚未這樣做)秋茫。 確保按如下所示使用 Resource Manager 模式:
Azure CLI復(fù)制
azureconfigmodearm
如果創(chuàng)建并上傳了自定義 Linux 磁盤映像史简,請確保已安裝Azure Linux 代理2.0.5 或更高版本。 在使用庫映像創(chuàng)建的 VM 上肛著,系統(tǒng)已自動安裝并配置了此訪問擴展圆兵。
重置 SSH 配置
SSHD 配置本身可能有誤或服務(wù)遇到錯誤。 可以重置 SSHD 以確保 SSH 配置本身是有效的枢贿。 要執(zhí)行的第一個故障排除步驟應(yīng)該是重置 SSHD殉农。
以下示例重置myResourceGroup資源組中名為myVM的 VM 上的 SSHD。 請使用自己的 VM 和資源組名稱局荚,如下所示:
Azure CLI復(fù)制
azurevmreset-access--resource-groupmyResourceGroup--namemyVM \--reset-ssh
重置用戶的 SSH 憑據(jù)
如果 SSHD 看上去運行正常轮傍,可以重置給定用戶的密碼首装。 以下示例在myResourceGroup中名為myVM的 VM 上,將myUsername的憑據(jù)重置為myPassword中指定的值挥下。 請如下所示使用自己的值:
Azure CLI復(fù)制
azurevmreset-access--resource-groupmyResourceGroup--namemyVM \--user-namemyUsername--passwordmyPassword
如果使用 SSH 密鑰身份驗證棚瘟,可以重置給定用戶的 SSH 密鑰庄蹋。 以下示例在myResourceGroup中名為myVM的 VM 上限书,更新~/.ssh/id_rsa.pub中為用戶myUsername存儲的 SSH 密鑰。 請如下所示使用自己的值:
Azure CLI復(fù)制
azurevmreset-access--resource-groupmyResourceGroup--namemyVM \--user-namemyUsername--ssh-key-file~/.ssh/id_rsa.pub
重新啟動 VM
如果已重置 SSH 配置和用戶憑據(jù)扰柠,或者在執(zhí)行此操作期間遇到錯誤,可以嘗試重新啟動 VM 來解決基本的計算問題劝枣。
Azure 門戶
若要使用 Azure 門戶重新啟動 VM舔腾,請選擇 VM,然后單擊“重新啟動”按鈕采桃,如以下示例中所示:
Azure CLI 1.0
以下示例重新啟動myResourceGroup資源組中名為myVM的 VM工扎。 請如下所示使用自己的值:
Azure CLI復(fù)制
azurevmrestart--resource-groupmyResourceGroup--namemyVM
Azure CLI 2.0
以下示例使用az vm restart重新啟動名為myResourceGroup的資源組中名為myVM的 VM呈础。 請如下所示使用自己的值:
Azure CLI復(fù)制
azvmrestart--resource-groupmyResourceGroup--namemyVM
重新部署 VM
可以將 VM 重新部署到 Azure 中的另一個節(jié)點沙廉,這可能可以更正任何潛在的網(wǎng)絡(luò)問題。 有關(guān)重新部署 VM 的信息巨税,請參閱將虛擬機重新部署到新的 Azure 節(jié)點。
Note
完成此操作后远寸,臨時磁盤數(shù)據(jù)會丟失,并且系統(tǒng)會更新與虛擬機關(guān)聯(lián)的動態(tài) IP 地址。
Azure 門戶
若要使用 Azure 門戶重新部署 VM监署,請選擇 VM,然后向下滾動到“支持 + 故障排除”部分。 Click theRedeploybutton as in the following example:
Azure CLI 1.0
以下示例重新部署myResourceGroup資源組中名為myVM的 VM。 請如下所示使用自己的值:
Azure CLI復(fù)制
azurevmredeploy--resource-groupmyResourceGroup--namemyVM
Azure CLI 2.0
以下示例使用az vm redeploy重新部署名為myResourceGroup的資源組中名為myVM的 VM。 請如下所示使用自己的值:
Azure CLI復(fù)制
azvmredeploy--resource-groupmyResourceGroup--namemyVM
使用經(jīng)典部署模型創(chuàng)建的 VM
若要解決使用經(jīng)典部署模型創(chuàng)建的 VM 中最常見的 SSH 連接失敗問題驹愚,請嘗試以下步驟。 執(zhí)行每個步驟后,請嘗試重新連接到 VM余佛。
從Azure 門戶重置遠程訪問柠新。 在 Azure 門戶中選擇 VM辉巡,然后單擊“重置遠程...”按鈕。
重啟 VM憔恳。 在Azure 門戶中選擇 VM程梦,然后單擊“重新啟動”按鈕挺份。
將 VM 重新部署到新的 Azure 節(jié)點。 有關(guān)如何重新部署 VM 的信息朵你,請參閱將虛擬機重新部署到新的 Azure 節(jié)點各聘。
完成此操作后妆兑,臨時磁盤數(shù)據(jù)會丟失魂拦,并且系統(tǒng)會更新與虛擬機關(guān)聯(lián)的動態(tài) IP 地址毛仪。
按照如何為基于 Linux 的虛擬機重置密碼或 SSH中的說明執(zhí)行以下操作:
重置密碼或 SSH 密鑰。
創(chuàng)建sudo用戶帳戶芯勘。
重置 SSH 配置箱靴。
檢查 VM 的資源運行狀況,了解是否存在任何平臺問題荷愕。
選擇 VM 并向下滾動到“設(shè)置” > “檢查運行狀況”衡怀。
其他資源
如果在執(zhí)行后續(xù)步驟之后仍然無法通過 SSH 連接到 VM,請參閱更詳細的故障排除步驟安疗,查看其他可以解決問題的步驟抛杨。
有關(guān)對應(yīng)用程序訪問進行故障排除的詳細信息,請參閱對在 Azure 虛擬機上運行的應(yīng)用程序的訪問進行故障排除
有關(guān)對使用經(jīng)典部署模型創(chuàng)建的虛擬機進行故障排除的詳細信息荐类,請參閱如何為基于 Linux 的虛擬機重置密碼或 SSH怖现。