目錄
- 背景
- 分析
- 解決方案
- 問題結論
背景
服務器降配,將實例規格從r5.4xlarge降為r5.2xlarge后服務器ssh無法登陸
分析
- 查看aws控制臺,可以看到實例狀態時啟動的,并且狀態檢查已通過
- 內網ip和外網ip都是可以ping通的
- telnet ip port不通(之前就改變了ssh的配置,修改了ssh默認端口)
- 控制臺的系統日志顯示ssh服務是啟動了的
解決方案
初步判斷是ssh配置的問題
但是這個時候又沒辦法通過ssh登陸來修改ssh配置,其它登陸方式(控制臺登陸、telnet登陸等)都沒開通
通過救援實例登陸
具體思路就是重新在aws控制臺啟動一個新的實例,最小規格的就行。然后將原來無法啟動服務器的硬盤掛載到新實例上當做附加卷,修改完附加卷上的sshd_config后再掛載回去。
下面是一些用到的命令:
# 創建掛載目錄 sudo mkdir /mnt/rescue # 掛載到創建的目錄 sudo mount -t xfs -o nouuid /dev/xvdf1 /mnt/rescue/ # 卸載目錄 sudo umount /mnt/rescue/
注意硬盤在aws控制臺掛載和卸載的時候都需要把實例給停止。然后掛載的目錄也是有講究的,附加卷的掛載路徑是/dev/sd[f-p]。如果掛載了之后導致新的實例啟動不了,可以換個掛載路徑再掛載試試。
問題結論
之前的服務器默認ssh端口不是22,更換實例類型后ssh配置有初始化,無法登陸將ssh配置的22端口放開,密碼登陸放開就可以了。
還有一個小問題,把sshd_config的22和修改的端口都放開,再把硬盤掛載回去,此時舊的實例登陸上去,再看ssh的配置除了22端口,另一個端口被注釋了,可能是aws自己操作的。
參考文檔