針對 Azure Linux VM 中的 SSH 連線問題進行疑難解答,因為許可權和擁有權問題
適用於:✔️ Linux VM
注意
本文所參考的 CentOS 是一種 Linux 發行版,且將到達生命周期結束(EOL)。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引。
本文提供透過安全殼層連線到Linux虛擬機 (VM) 失敗之問題的解決方案,因為 RHEL 中的 /var/empty/sshd 目錄、SUSE 中的 /var/lib/empty 目錄,或 Ubuntu 中的 /var/run/sshd 目錄不存在,或它不是根使用者擁有,或它是群組可寫入或世界可寫入。
徵兆
當您透過 SSH 連線到 Linux 虛擬機(VM)時,聯機會失敗。 視 Linux 發行版而定,您可能會收到下列有關受影響目錄的錯誤訊息。
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
原因
如果受影響的目錄不是根使用者所擁有,或它是群組可寫入或世界寫入,就可能發生此問題。
若要解決此問題,請使用下列其中一個解決方案:
解決方案 1:在線修復 VM
以下是離線修復 VM 的兩種方法:
使用序列主控台
從 Azure 入口網站 連線到 VM 的序列主控台。
使用本機系統管理帳戶及其對應的認證或密碼登入 VM。
執行下列命令來解決權限和所有權問題:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
使用「執行命令」擴充功能
注意
此方法依賴 Azure Linux VM 代理程式 (waagent)。 因此,請確定代理程式已安裝在 VM 中,且其服務正在執行中。
在 Azure 入口網站 中,開啟 VM 的 [屬性] 視窗,以檢查代理程序狀態。 如果代理程式已啟用且具有 [就緒 ] 狀態,請遵循下列步驟來變更許可權:
移至 Azure 入口網站,找出您的 VM 設定,然後選取 [作業] 底下的 [執行命令]。
選取 [RunShellScript>執行],以執行下列殼層腳本:
#!/bin/bash #Script to change permissions on a file mkdir -p /var/empty/sshd;chmod 755 /var/empty/sshd;chown root:root /var/empty/sshd
- 腳本執行完成之後,輸出控制台視窗會顯示「啟用成功」訊息。
如果您可以透過 SSH 連線到 VM,而且想要分析 Run-command 腳本執行的詳細數據,請檢查 /var/log/azure/run-command 目錄中的 handler.log 檔案。
解決方案 2:離線修復 VM
注意
- 如果 VM 序列主控台存取無法使用,且 waagent 尚未就緒,請使用此解決方案。
- 在Ubuntu中 ,/var/run/sshd 目錄會在記憶體中執行。 重新啟動 VM 也會修正此問題。 因此,不需要Ubuntu VM中的離線疑難解答。
以下是離線修復 VM 的兩種方法:
使用 Azure Linux 自動修復 (ALAR)
Azure Linux 自動修復 (ALAR) 腳本是使用 Azure 虛擬機修復命令修復 Linux VM 中所述之 VM 修復延伸模組的一部分。
請遵循下列步驟,將手動脫機程式自動化:
注意
在下列步驟中,請據以取代 $RGNAME
、 $VMNAME
、 $USERNAME
、 $PASSWORD
和 repairdiskcopy
值。
使用 az vm repair create 命令來建立修復 VM。 修復 VM 有連結問題 VM 的 OS 磁碟復本。
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
登入修復 VM。 將和 chroot 掛接至作業系統磁碟連結複本的檔案系統。 請遵循詳細的 chroot 指示。
執行下列命令來解決權限和擁有權問題:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
套用變更之後,請執行下列
az vm repair restore
命令,以使用原始 VM 執行自動 OS 磁碟交換。az vm repair restore --verbose -g $RGNAME -n $VMNAME
使用手動方法
如果序列主控台和 ALAR 方法都不適用於您或失敗,則必須手動執行修復。 請遵循下列步驟,將 OS 磁碟手動連結至復原 VM,並將 OS 磁碟交換回原始 VM:
成功將OS磁碟連結至復原 VM 之後,請遵循詳細的 chroot 指示 ,將和 chroot 掛接至所連結 OS 磁碟的文件系統。 然後,依照使用 Azure Linux 自動修復(ALAR) 一節中的步驟 3 來解決許可權和擁有權問題。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。