SSH服務(wù)未設(shè)置開機時自啟動
如果Linux實例中SSH服務(wù)未設(shè)置開機時自啟動,重啟實例后,將無法使用SSH遠(yuǎn)程連接實例,您可以使用VNC登錄實例進行修復(fù),也可以通過實例健康診斷工具進行問題修復(fù)。
背景信息
問題描述:重啟Linux實例后,無法繼續(xù)使用SSH遠(yuǎn)程連接實例,但是可以使用VNC登錄。
可能原因:造成該問題的原因有多種,其中一種原因為SSH服務(wù)未設(shè)置開機時自啟動,導(dǎo)致Linux實例重啟后SSH服務(wù)處于停止?fàn)顟B(tài)。
例如:在CentOS 7系統(tǒng)中,運行以下命令查看SSH服務(wù)(sshd.service
)的狀態(tài)。
systemctl status sshd.service
查看SSH服務(wù)狀態(tài)未啟動,返回結(jié)果示例如下圖所示:
您可以根據(jù)以下不同場景選擇對應(yīng)的解決方案:
SSH服務(wù)未開啟開機自啟動時,一般不會造成實例系統(tǒng)啟動失敗,但會導(dǎo)致您通過SSH或Workbench遠(yuǎn)程登錄時,無法連接。如果實例已經(jīng)正常啟動,您可以使用VNC登錄正常啟動的實例進行修復(fù)。具體操作,請參見使用VNC登錄正常啟動的實例進行修復(fù)。
如果您通過實例健康診斷工具進行診斷,診斷結(jié)果中實例無法啟動場景的SSH服務(wù)配置檢查未通過,并且實例處于正在掛載修復(fù)盤的模式下,您可以使用VNC登錄修復(fù)系統(tǒng)進行問題修復(fù)。具體操作,請參見使用VNC登錄修復(fù)系統(tǒng)進行修復(fù)。
使用VNC登錄正常啟動的實例進行修復(fù)
使用VNC遠(yuǎn)程連接問題實例。
具體操作,請參見使用VNC登錄實例。
運行以下任一命令將SSH服務(wù)設(shè)置為開機時自啟動。
多數(shù)Linux發(fā)行版使用systemd作為服務(wù)管理程序,請您根據(jù)不同版本的服務(wù)管理程序,自行修改命令內(nèi)容。本文以systemd為例,示例命令如下所示:
重要不同Linux發(fā)行版的SSH服務(wù)名稱可能不同,您需要根據(jù)實際的SSH服務(wù)名稱自行修改命令。例如:在CentOS、Fedora CoreOS、Red Hat Enterprise Linux、SUSE Linux Enterprise Server等版本中SSH服務(wù)名稱為
sshd.service
;在Debian、Ubuntu等版本中SSH服務(wù)名稱為ssh.service
。運行以下命令設(shè)置SSH服務(wù)開機時自啟動,然后必須重啟實例后再使用SSH遠(yuǎn)程登錄ECS實例。
systemctl enable sshd.service
運行以下命令設(shè)置SSH服務(wù)開機時自啟動,并立即啟動SSH服務(wù),此時無需重啟ECS實例,可以直接使用SSH遠(yuǎn)程登錄ECS實例。
systemctl enable --now sshd.service
設(shè)置完成后,運行以下命令查看SSH服務(wù)的運行狀態(tài)是否為運行中。
systemctl status sshd.service
命令的返回結(jié)果示例如下圖所示:此時您可以切換至SSH遠(yuǎn)程連接Linux實例。如果仍無法登錄,請重啟實例后,再次嘗試使用SSH遠(yuǎn)程連接Linux實例。
使用VNC登錄修復(fù)系統(tǒng)進行修復(fù)
- 遠(yuǎn)程連接問題實例。當(dāng)ECS實例處于正在掛載修復(fù)盤的模式下時,只能通過VNC遠(yuǎn)程連接。具體操作,請參見使用VNC登錄實例。
- 查看問題實例原有系統(tǒng)盤的掛載信息。在臨時掛載的修復(fù)盤中,問題實例原有系統(tǒng)盤的文件系統(tǒng)會被掛載到某一臨時目錄下。您可以通過以下任一方式查看所在的臨時目錄信息:
- 通過ECS控制臺的實例健康診斷結(jié)果獲取,對應(yīng)的信息格式示例如下所示:
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
。 - 在臨時掛載的修復(fù)盤中,運行mount命令查看。例如,問題實例原有系統(tǒng)盤的設(shè)備路徑為/dev/vda,命令示例如下所示:
mount | grep /dev/vda
返回結(jié)果如下所示:/dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
- 通過ECS控制臺的實例健康診斷結(jié)果獲取,對應(yīng)的信息格式示例如下所示:
- 運行chroot命令,將根目錄切換為問題實例原有系統(tǒng)盤所在的臨時路徑,并進入chroot環(huán)境。您需要在問題實例原有系統(tǒng)盤所在的臨時路徑中進行文件修復(fù)。例如,臨時路徑為/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****,命令如下所示:
chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
在chroot環(huán)境,運行以下命令將SSH服務(wù)設(shè)置為開機時自啟動。
多數(shù)Linux發(fā)行版使用systemd作為服務(wù)管理程序,請您根據(jù)不同版本的服務(wù)管理程序,自行修改命令內(nèi)容。本文以systemd為例,示例命令如下所示:
重要不同Linux發(fā)行版的SSH服務(wù)名稱可能不同,您需要根據(jù)實際的SSH服務(wù)名稱自行修改命令。例如:在CentOS、Fedora CoreOS、Red Hat Enterprise Linux、SUSE Linux Enterprise Server等版本中SSH服務(wù)名稱為
sshd.service
;在Debian、Ubuntu等版本中SSH服務(wù)名稱為ssh.service
。systemctl enable sshd.service
由于當(dāng)前的chroot環(huán)境僅構(gòu)造了問題實例原有系統(tǒng)盤中的文件系統(tǒng)與目錄環(huán)境,實際所有的進程為修復(fù)系統(tǒng)中的進程,無法立即啟動問題實例原有系統(tǒng)盤上的SSH服務(wù)。因此禁止使用systemctl enable命令的--now參數(shù)立即啟動SSH服務(wù),同時也不支持使用systemctl status命令查看問題實例原有系統(tǒng)盤上的SSH服務(wù)的當(dāng)前狀態(tài)。
修復(fù)完成后,退出修復(fù)環(huán)境,然后檢查問題實例的當(dāng)前狀態(tài)。
運行exit命令,退出chroot環(huán)境。
在ECS控制臺的實例健康診斷頁面,卸載臨時掛載的修復(fù)盤并恢復(fù)問題實例至正常模式,然后重啟實例。
遠(yuǎn)程連接已修復(fù)的ECS實例,確認(rèn)成功登錄。