在救援模式救回你的 VPS

有一次因為 selinux 設定不當導致 SSH 無法連上我的 VPS,我找到了這篇文章 How to Recover Your VPS in Rescue Mode 進入救援模式修改設定就可以重新連上線了。

(其實以我的需求來說應該用 VNC 才對,那時候雖然知道 VNC 可以遠端畫面操作,不過我還以為需要先在 VPS 上安裝相應軟體才能用所以我在第一時間沒有想到它。)

救援模式會使用自己準備的 kernel 做為系統來啟動而不是使用我們在硬碟中一直使用的系統,這樣一來即使是因為不當設定導致無法開機也可以進入救援模式修改設定來回復。

開啟救援模式

這個步驟會因不同的 VPS 操控面板(control panel)而異,這裡參考就好。

進入 VPS 的操控面板選擇 rescue

進入 rescue 設定功能

選擇 kernel,基本上選最新的就可以了

選擇 rescue kernel

啟用救援模式

啟用救援模式

確認啟用救援模式

確認啟用救援模式

此時 VPS 會重新開機進入救援模式,並且給你登入救援模式的帳號密碼(可能要稍等一下才連得上,畢竟重新開啟也需要時間)

連線資訊

掛載原先系統

連上 VPS

清除遠端主機認證

因為救援模式算是另一個系統了,如果用同個 IP 進行 SSH 會被阻止

ssh-keygen -R 你的IP

SSH 連線

使用剛剛操控面板給你的資訊進行連線

ssh user@你的IP

掛載原系統分區

要對原先系統進行設定必須要先找到系統分區並將其掛載

列出可用設備

lsblk

此時會列出如下的列表

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0     11:0    1 1024M  0 rom
 vda    254:0    0   17G  0 disk
 ├─vda1 254:1    0   16G  0 part
 └─vda2 254:2    0    1G  0 part
 vdb    254:16   0  1.1G  0 disk
 └─vdb1 254:17   0  1.1G  0 part /

利用磁碟大小找到原先系統的磁碟代號

例如我原本的硬碟有 17G 從垂直欄 SIZE 找到 17G 大小的硬碟為 vda,所以 vda 就是我要找的硬碟

而底下被分割成 16G 的 vda1 就是我要掛載的磁碟代號。

創建掛載目錄

mkdir /mnt/root

掛載

mount /dev/你的磁碟機代號 /mnt/root

原先系統會被掛載在 /mnt/root 下,這時就可以去找導致錯誤的程式修改其設定或是關閉其服務。

當然我們也可以使用 chroot (change root) 來方便操作

chroot /mnt/root

關閉救援模式

操作完後就可以把救援模式關掉,如果確實修改好導致無法開機的設定,那麼等一段時間重新開機後就可以正常連回 VPS 了

關閉

關閉 rescue

確認

確認關閉

重新清除遠端主機認證

ssh-keygen -R 你的IP
Built with Hugo
Theme Stack designed by Jimmy