在Linux執行個體中,如果一些關鍵檔案的格式不是Unix格式,可能導致該執行個體無法被遠端連線。您可以通過執行個體健康診斷工具進行問題修複。
前提條件
Linux執行個體已通過執行個體健康診斷工具進行診斷。具體操作,請參見診斷執行個體的健康狀態。
問題分析
問題描述
執行個體啟動異常或無法遠端連線,通過執行個體健康診斷,診斷結果顯示:當前執行個體中檔案格式錯誤,可能會導致執行個體無法登入。常見導致執行個體無法登入或服務無法啟動的檔案有/etc/passwd、/etc/shadow、/etc/ssh/sshd_config等。在執行個體診斷結果中會有損壞的檔案路徑。

常見原因
檔案在Windows系統中編輯後上傳至Linux(如通過FTP/SFTP)。
使用不相容的文字編輯器修改檔案導致分行符號異常。
解決方案
使用具有sudo許可權的使用者遠端連線問題執行個體。
當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失敗,檢查掛載路徑是否正確,或運行以下命令:mount --bind /dev /mnt/repair_disk/dev mount --bind /proc /mnt/repair_disk/proc在chroot環境中,運行vim命令,編輯指定檔案。
重要備份優先,修改關鍵系統檔案前務必備份,如
cp /etc/passwd /etc/passwd.bak。編輯前,您需要注意以下事項:
當前編輯的檔案均為問題執行個體原有系統硬碟中的檔案,如果您需要編輯該系統硬碟掛載點之外的檔案,請先運行exit命令退出chroot環境。
當前處於chroot環境,因此命令中不需要加上/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****路徑地址。
例如,執行個體原有系統硬碟中的/etc/passwd檔案,編輯命令為vim /etc/passwd,不需要添加/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****路徑地址。
vim [$File]其中[$File]變數為指定的非Unix格式的檔案名稱。本文以/etc/passwd檔案為例,命令樣本如下所示:
vim /etc/passwd調整檔案格式。
在檔案內,按下Shift+:按鍵組合,並輸入
set ff=unix後按下Enter鍵。
按下Shift+:按鍵組合,並輸入
wq後按下Enter鍵,儲存退出檔案。
- 修複完成後,退出修複環境,然後檢查問題執行個體的目前狀態。
- 運行exit命令,退出chroot環境。
- 在ECS控制台的執行個體健康診斷頁面,卸載臨時掛載的修複盤並恢複問題執行個體至正常模式。
- 遠端連線已修複的ECS執行個體,確認成功登入。