針對通過 SSH 連線到 Azure Linux VM 時發生的失敗、錯誤或被拒絕問題進行故障排除...
嘗試連線到 Linux 虛擬機器 (VM) 時,有多種原因可能會導致安全外殼 (SSH) 錯誤、SSH 連線失敗或被拒絕。 本文幫助使用者找出原因並更正問題。 可以使用 Azure 門戶、Azure CLI 或適用於 Linux 的 VM 訪問擴充套件來排查和解決連線問題。
Note
Azure 具有用於建立和處理資源的兩個不同的部署模型:Resource Manager 和經典。 這篇文章介紹瞭如何使用這兩種模型,但 Azure 建議大多數最新部署使用 Resource Manager 模型。
如果對本文中的任何內容需要更多幫助,可以聯絡MSDN Azure 和 Stack Overflow 論壇上的 Azure 專家。 或者,也可以提交 Azure 支援事件。 請轉到Azure 支援站點並選擇“獲取支援”。 有關使用 Azure 支援的資訊,請閱讀Azure 支援常見問題。
快速故障排除步驟
執行每個故障排除步驟後,請嘗試重新連線到 VM。
重置 SSH 配置。
重置使用者的憑據。
確認網路安全組規則是否允許 SSH 流量。
確保有一條網路安全組規則允許 SSH 流量(預設為 TCP 埠 22)。
在不使用 Azure 負載均衡器的情況下無法使用埠重定向/對映。
重啟 VM。
重新部署 VM。
繼續閱讀餘下的內容,獲取更詳細的故障排除步驟和說明。
排查 SSH 連線問題的可用方法
可以使用以下方法之一重置憑據或 SSH 配置:
Azure 門戶- 如果需要快速重置 SSH 配置或 SSH 金鑰,並且沒有安裝 Azure 工具,則很適合使用此方法。
Azure CLI 2.0- 如果已開啟命令列,則可以快速重置 SSH 配置或憑據。 還可以使用Azure CLI 1.0
Azure VMAccessForLinux 擴充套件- 建立和重複使用 json 定義檔案來重置 SSH 配置或使用者憑據。
在執行每個故障排除步驟之後,請嘗試再次連線到 VM。 如果仍然無法連線,請嘗試下一步。
使用 Azure 門戶
在 Azure 門戶中,可以快速重置 SSH 配置或使用者憑據,無需在本地計算機上安裝任何工具。
在 Azure 門戶中選擇 VM。 向下滾動到“支援 + 故障排除”部分並選擇“重置密碼”,如以下示例中所示:
重置 SSH 配置
第一步是從“模式”下拉選單中選擇“Reset configuration only”(如上面的螢幕截圖中所示),並單擊“重置”按鈕。 完成此操作後,再次嘗試訪問 VM。
重置使用者的 SSH 憑據
若要重置現有使用者的憑據,請從“模式”下拉選單中選擇“Reset SSH public key”或“Reset password”,如上面的螢幕截圖中所示。 指定使用者名稱和 SSH 金鑰或新密碼,然後單擊“重置”按鈕。
還可以通過此選單在 VM 上建立具有 sudo 許可權的使用者。 輸入新使用者名稱和關聯的密碼或 SSH 金鑰,並單擊“重置”按鈕。
使用 Azure CLI 2.0
安裝最新的Azure CLI 2.0並使用az login登入到 Azure 帳戶(如果尚未這樣做)。
Note
在 Azure 中國區使用 Azure CLI 2.0 之前,請先執行az cloud set -n AzureChinaCloud來改變雲環境。如果想切回國際版 Azure,請再次執行az cloud set -n AzureCloud。
如果建立並上傳了自定義 Linux 磁碟映像,請確保已安裝Azure Linux 代理2.0.5 或更高版本。 在使用庫映像建立的 VM 上,系統已自動安裝並配置了此訪問擴充套件。
重置使用者的 SSH 憑據
以下示例使用az vm user update,在myResourceGroup中名為myVM的 VM 上, 將myUsername的憑據重置為myPassword中指定的值。 請如下所示使用自己的值:
Azure CLI複製
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複製
azvmuserupdate--resource-groupmyResourceGroup--namemyVM \--usernamemyUsername--ssh-key-value~/.ssh/id_rsa.pub
使用 VMAccess 擴充套件
適用於 Linux 的 VM 訪問擴充套件可以讀入用於定義待執行操作的 json 檔案。這些操作包括重置 SSHD、重置 SSH 金鑰或新增使用者。 仍要使用 Azure CLI 呼叫 VMAccess 擴充套件,但可以根據需要在多個 VM 上重複使用該 json 檔案。 使用這種方法可以建立 json 檔案儲存庫,然後,可以在給定的方案中呼叫這些檔案。
重置 SSHD
建立包含以下內容的名為settings.json的檔案:
JSON複製
{"reset_ssh":"True"}
使用 Azure CLI,並呼叫VMAccessForLinux擴充套件並指定 json 檔案來重置 SSHD 連線。 以下示例使用az vm extension set,在myResourceGroup中名為myVM的 VM 上重置 SSHD。 請如下所示使用自己的值:
Azure CLI複製
azvmextensionset--resource-groupphilmea--vm-nameUbuntu \--nameVMAccessForLinux--publisherMicrosoft.OSTCExtensions--version1.2--settingssettings.json
重置使用者的 SSH 憑據
如果 SSHD 看上去執行正常,可以重置給定使用者的憑據。 若要重置使用者的密碼,請建立名為settings.json的檔案。 以下示例將myUsername的憑據重置為myPassword中指定的值。 在settings.json檔案中使用自己的值輸入以下行:
JSON複製
{"username":"myUsername","password":"myPassword"}
若要重置使用者的 SSH 金鑰,請先建立名為settings.json的檔案。 以下示例在myResourceGroup中名為myVM的 VM 上,將myUsername的憑據重置為myPassword中指定的值。 在settings.json檔案中使用自己的值輸入以下行:
JSON複製
{"username":"myUsername","ssh_key":"mySSHKey"}
建立 json 檔案之後,使用 Azure CLI 呼叫VMAccessForLinux擴充套件並指定 json 檔案來重置 SSH 使用者憑據。 以下示例重置myResourceGroup中名為myVM的 VM 上的憑據。 請如下所示使用自己的值:
Azure CLI複製
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複製
azureconfigmodearm
如果建立並上傳了自定義 Linux 磁碟映像,請確保已安裝Azure Linux 代理2.0.5 或更高版本。 在使用庫映像建立的 VM 上,系統已自動安裝並配置了此訪問擴充套件。
重置 SSH 配置
SSHD 配置本身可能有誤或服務遇到錯誤。 可以重置 SSHD 以確保 SSH 配置本身是有效的。 要執行的第一個故障排除步驟應該是重置 SSHD。
以下示例重置myResourceGroup資源組中名為myVM的 VM 上的 SSHD。 請使用自己的 VM 和資源組名稱,如下所示:
Azure CLI複製
azurevmreset-access--resource-groupmyResourceGroup--namemyVM \--reset-ssh
重置使用者的 SSH 憑據
如果 SSHD 看上去執行正常,可以重置給定使用者的密碼。 以下示例在myResourceGroup中名為myVM的 VM 上,將myUsername的憑據重置為myPassword中指定的值。 請如下所示使用自己的值:
Azure CLI複製
azurevmreset-access--resource-groupmyResourceGroup--namemyVM \--user-namemyUsername--passwordmyPassword
如果使用 SSH 金鑰身份驗證,可以重置給定使用者的 SSH 金鑰。 以下示例在myResourceGroup中名為myVM的 VM 上,更新~/.ssh/id_rsa.pub中為使用者myUsername儲存的 SSH 金鑰。 請如下所示使用自己的值:
Azure CLI複製
azurevmreset-access--resource-groupmyResourceGroup--namemyVM \--user-namemyUsername--ssh-key-file~/.ssh/id_rsa.pub
重新啟動 VM
如果已重置 SSH 配置和使用者憑據,或者在執行此操作期間遇到錯誤,可以嘗試重新啟動 VM 來解決基本的計算問題。
Azure 門戶
若要使用 Azure 門戶重新啟動 VM,請選擇 VM,然後單擊“重新啟動”按鈕,如以下示例中所示:
Azure CLI 1.0
以下示例重新啟動myResourceGroup資源組中名為myVM的 VM。 請如下所示使用自己的值:
Azure CLI複製
azurevmrestart--resource-groupmyResourceGroup--namemyVM
Azure CLI 2.0
以下示例使用az vm restart重新啟動名為myResourceGroup的資源組中名為myVM的 VM。 請如下所示使用自己的值:
Azure CLI複製
azvmrestart--resource-groupmyResourceGroup--namemyVM
重新部署 VM
可以將 VM 重新部署到 Azure 中的另一個節點,這可能可以更正任何潛在的網路問題。 有關重新部署 VM 的資訊,請參閱將虛擬機器重新部署到新的 Azure 節點。
Note
完成此操作後,臨時磁碟資料會丟失,並且系統會更新與虛擬機器關聯的動態 IP 地址。
Azure 門戶
若要使用 Azure 門戶重新部署 VM,請選擇 VM,然後向下滾動到“支援 + 故障排除”部分。 Click theRedeploybutton as in the following example:
Azure CLI 1.0
以下示例重新部署myResourceGroup資源組中名為myVM的 VM。 請如下所示使用自己的值:
Azure CLI複製
azurevmredeploy--resource-groupmyResourceGroup--namemyVM
Azure CLI 2.0
以下示例使用az vm redeploy重新部署名為myResourceGroup的資源組中名為myVM的 VM。 請如下所示使用自己的值:
Azure CLI複製
azvmredeploy--resource-groupmyResourceGroup--namemyVM
使用經典部署模型建立的 VM
若要解決使用經典部署模型建立的 VM 中最常見的 SSH 連線失敗問題,請嘗試以下步驟。 執行每個步驟後,請嘗試重新連線到 VM。
從Azure 門戶重置遠端訪問。 在 Azure 門戶中選擇 VM,然後單擊“重置遠端...”按鈕。
重啟 VM。 在Azure 門戶中選擇 VM,然後單擊“重新啟動”按鈕。
將 VM 重新部署到新的 Azure 節點。 有關如何重新部署 VM 的資訊,請參閱將虛擬機器重新部署到新的 Azure 節點。
完成此操作後,臨時磁碟資料會丟失,並且系統會更新與虛擬機器關聯的動態 IP 地址。
按照如何為基於 Linux 的虛擬機器重置密碼或 SSH中的說明執行以下操作:
重置密碼或 SSH 金鑰。
建立sudo使用者帳戶。
重置 SSH 配置。
檢查 VM 的資源執行狀況,瞭解是否存在任何平臺問題。
選擇 VM 並向下滾動到“設定” > “檢查執行狀況”。
其他資源
如果在執行後續步驟之後仍然無法通過 SSH 連線到 VM,請參閱更詳細的故障排除步驟,檢視其他可以解決問題的步驟。
有關對應用程式訪問進行故障排除的詳細資訊,請參閱對在 Azure 虛擬機器上執行的應用程式的訪問進行故障排除
有關對使用經典部署模型建立的虛擬機器進行故障排除的詳細資訊,請參閱如何為基於 Linux 的虛擬機器重置密碼或 SSH。
立即訪問http://market.azure.cn
相關文章
- 解決使用SSH連線Linux伺服器時連線失敗的故障Linux伺服器
- NetNORAD:通過端到端探測對網路進行故障排除
- websocket連線mina被拒絕Web
- 解決vscode進行chrome除錯時報錯:localhost拒絕了我們的連線請求VSCodeChrome除錯localhost
- DedeCms錯誤警告:連線資料庫失敗資料庫
- PbootCMS錯誤提示:資料庫連線失敗boot資料庫
- MacBook上使用ssh localhost被拒絕Maclocalhost
- 串列埠通訊常見的錯誤和故障排除方法串列埠
- 進入 phpMyAdmin 頁面訪問被拒絕PHP
- docker 容器環境下的 MySQL 拒絕連線錯誤解決辦法DockerMySql
- 故障排除提示:5 個最常見的 Linux 問題Linux
- 我的postgresql資料庫報埠錯誤,連線失敗SQL資料庫
- windows 系統上進行 pip 包安裝時遇到許可權錯誤,提示拒絕訪問 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒絕訪問WindowsErrorPackage
- 【Azure Fabric Service】Service Fabric部署失敗問題 Provisioning of VM extension ConfigureVM has timed out.
- 織夢DedeCms錯誤警告,連線資料庫失敗資料庫
- Windows下 本地安裝mysql 詳細步驟其中報錯:服務名無效,發生系統錯誤5,拒絕訪問錯誤解決及navicat 的連線WindowsMySql
- 作業系統錯誤5:拒絕訪問作業系統
- 通過redis的monitor命令排除故障Redis
- win10提示將安全資訊應用到以下物件時發生錯誤拒絕訪問如何解決Win10物件
- Github ssh的連線問題Github
- Linux 常見問題 - 拒絕遠端訪問Linux
- 通過Python檢視Azure VM的狀態Python
- psql: 錯誤: 致命錯誤: 對使用者“postgres“的對等認證失敗SQL
- Dedecms錯誤警告:連線資料庫失敗,出錯怎麼解決?資料庫
- DB2資料庫連線失敗問題DB2資料庫
- 如何對專案中的問題進行分析——FPGA失敗案例小結FPGA
- vsphere報錯: 連線到虛擬機器控制檯失敗並顯示錯誤:VMRC 控制檯的連線已斷開。正在嘗試重新連線虛擬機
- Druid連線池引數maxWait配置錯誤引發的問題UIAI
- Error infos:DedeCms錯誤警告:連線資料庫失敗,可能資料庫密碼不對或資料庫伺服器出錯!Error資料庫密碼伺服器
- Error infos: DedeCms錯誤警告:連線資料庫失敗,可能資料庫密碼不對或資料庫伺服器出錯!Error資料庫密碼伺服器
- ELK實驗中 顯示連線拒絕訪問
- linux 資料庫localhostl連線成功127.0.0.1連線失敗Linux資料庫localhost127.0.0.1
- 如何解決應用安裝失敗錯誤碼-13的問題
- root使用者無法通過ssh連線Linux系統Linux
- 解決 Windows 下 Homestead 建立軟連線失敗問題Windows
- tomcat拒絕連線解決方法Tomcat
- Nginx 日誌 failed (13: Permission denied) 錯誤(13:許可權被拒絕)NginxAI
- Android編譯通過,執行編譯錯誤問題總結Android編譯
- Azure Application Gateway(二)對後端 VM 進行負載均衡APPGateway後端負載