本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
當Linux實例中關于SSH的訪問權限配置異常時,將導致無法遠程登錄。您可以通過實例健康診斷工具進行問題修復。
前提條件
Linux實例已通過實例健康診斷工具進行診斷,診斷結果中以下檢查未通過:
實例無法啟動場景下的關鍵系統文件權限檢查。
實例無法啟動場景下的SSH訪問權限檢查。
背景信息
問題描述:Linux實例中,用戶密碼和SSH的相關文件及目錄的訪問權限配置異常,導致無法登錄Linux實例或者無法從SSH遠程連接Linux實例。
問題原因:Linux實例中關于用戶密碼和SSH的相關文件和目錄的訪問權限配置不足。
本文主要介紹通過實例健康診斷工具提供的臨時修復盤修復問題實例。您也可以在正常實例上掛載異常實例的系統盤進行修復。具體操作,請參見SSH的訪問權限異常導致無法遠程連接Linux實例。
解決方案
- 遠程連接問題實例。當ECS實例處于正在掛載修復盤的模式下時,只能通過VNC遠程連接。具體操作,請參見使用VNC登錄實例。
- 查看問題實例原有系統盤的掛載信息。在臨時掛載的修復盤中,問題實例原有系統盤的文件系統會被掛載到某一臨時目錄下。您可以通過以下任一方式查看所在的臨時目錄信息:
- 在系統盤詳情頁的掛載實例進行查看,對應的臨時目錄格式示例為:
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
,其中bp19bspzms79kqse****
為實例原有系統盤的云盤序列號。 - 在臨時掛載的修復盤中,運行mount命令查看。例如,問題實例原有系統盤的設備路徑為/dev/vda,命令示例如下所示:
mount | grep /dev/vda
返回結果如下所示:/dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
- 在系統盤詳情頁的掛載實例進行查看,對應的臨時目錄格式示例為:
- 運行chroot命令,將根目錄切換為問題實例原有系統盤所在的臨時路徑,并進入chroot環境。您需要在問題實例原有系統盤所在的臨時路徑中進行文件修復。例如,臨時路徑為/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****,命令如下所示:
chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
在chroot環境,運行以下命令,重置/var/empty/sshd目錄的權限。
警告請嚴格參照其他相同Linux發行版且可以正常遠程登錄的實例中的目錄權限進行設置,避免因權限過高導致SSH服務啟動失敗。SSH相關文件和目錄的權限通常都涉及遠程連接時賬戶、密碼等關鍵信息的安全性,SSH進程對于這些權限具有明確的約束。如果某個文件和目錄的權限超過了SSH約束條件,SSH服務會認為其內容不可信任,可能導致SSH服務啟動失敗或遠程連接異常問題。
設置777權限意味著系統上的任何用戶都擁有對該文件或目錄的可讀、可寫和可執行的權限,并且可能會帶來巨大的安全風險。例如,如果您將/var/empty/sshd目錄權限更改為777,則系統上的任何用戶都可以創建、刪除或修改該目錄中的文件。除非有明確參考,否則禁止設置777權限。
chmod 711 /var/empty/sshd
除了檢查/var/empty/sshd目錄權限,也可以參考本方案檢查/etc/passwd、/etc/group、/etc/shadow、/etc/gshadow文件和/etc/securetty目錄的權限,關于各目錄正確的權限,您可以參考其他可以正常遠程登錄的實例中目錄權限。
- 修復完成后,退出修復環境,然后檢查問題實例的當前狀態。
- 運行exit命令,退出chroot環境。
- 在ECS控制臺的實例健康診斷頁面,卸載臨時掛載的修復盤并恢復問題實例至正常模式。
- 遠程連接已修復的ECS實例,確認成功登錄。