有什麼項目無法使用 SSH 登入裸機伺服器?
我無法使用 SSH 來登入裸機伺服器。
如果您無法使用 SSH 登入裸機伺服器,則下列其中一個原因可能是原因。
- VPN 未連接至裸機伺服器-只有在您想要使用 SSH 連接至專用 IP 時才適用。
- root 使用者已停用 SSH 登入。
- SSH 埠號已變更。
- 作業系統防火牆正在封鎖 SSH 資料流量。
- 網路防火牆正在封鎖 SSH 資料流量。
- SSH 服務不在執行中。
請使用下列其中一個解決方案來修正此問題。
-
VPN 未連接至裸機伺服器
若要使用 SSH 登入伺服器的專用 IP,您必須建立與 IBM Cloud® 的 SSL VPN 連線,如 開始使用 IBM Cloud Virtual Private Networking 中所述。
您可以透過將連線測試傳送至位於
10.0.80.11
及10.0.80.12
的 IBM Cloud® DNS 解析器 IP,來驗證 VPN 連線是否正常運作。 如果成功,則 VPN 連線會運作。 -
root 使用者已停用 SSH 登入。
基於安全理由,在伺服器的 SSH 配置 (
/etc/ssh/sshd_config
) 中,可能會停用 root 使用者透過 SSH 的遠端登入。建議您不要啟用 root 使用者的遠端 SSH 登入。 請改為建立遠端 SSH 登入的非 root 使用者。 不過,如果您想要為 root 使用者啟用伺服器的 SSH,請使用下列步驟。
-
使用 IPMI 遠端主控台登入裸機伺服器。
-
以 root 身分編輯
/etc/ssh/sshd_configvi/etc/ssh/sshd_config
中的sshd_config
檔案。 -
在包含
PermitRootLogin yes
之檔案的「鑑別」區段中新增一行。 此行可能會以 "#" 來註銷。 如果已註銷,則移除 "#"。#LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
-
儲存已更新的
/etc/ssh/sshd_config
檔案。 -
重新啟動 SSH 服務。
- 若為 Ubuntu 或 Debian Linux,請執行
sudo systemctl restart ssh.service
。 - 若為 RHEL 及 CentOS Linux,請執行
sudo systemctl restart sshd.service
。
- 若為 Ubuntu 或 Debian Linux,請執行
-
在服務重新啟動之後,請登入。
-
-
SSH 埠號已變更
基於安全理由,您的管理者可能已將使用的 SSH 埠從預設埠 22 變更為另一個埠號。
您可以透過 IPMI 遠端主控台登入伺服器,來檢查針對 SSH 配置的埠號。 然後,在
/etc/ssh/sshd_config
檔案中搜尋包含 "Port" 的行。如果埠已從預設值變更,則執行下列指令,其中
IP_ADDRESS
是伺服器的 IP 位址,PORT_NUMBER
是新的埠號。ssh root@IP_ADDRESS -p ssh-PORT_NUMBER
-
作業系統防火牆正在封鎖 SSH 資料流量
一或多個
iptables
項目可能正在封鎖 SSH 資料流量。 您可以暫時停用iptables
,以驗證作業系統防火牆是否有問題。 若要停用iptables
,請進行下列其中一項編輯。```sh {: pre} # /etc/rc.d/init.d/iptables stop or # /etc/rc.d/init.d/ip6tables stop # chkconfig iptables off or # chkconfig ip6tables off ```
在停用
iptables
之後,如果您可以使用 SSH 來存取伺服器,則需要檢閱iptables
規則,並進行任何適當的變更。 -
網路防火牆正在封鎖 SSH 資料流量
您的防火牆可能封鎖伺服器的 SSH 資料流量。
您可以透過執行從本端工作站到裸機伺服器的追蹤路徑,來測試防火牆是否封鎖資料流量。 請注意追蹤路徑停止的 IP 位址。 如果這是您正在使用之防火牆或閘道的 IP 位址,則該 IP 位址可能封鎖存取。 您可以聯絡防火牆管理者以取得指引。
另一個測試防火牆是否是問題來源的方法是暫時略過它,然後使用 SSH 登入您的伺服器。 如果您可以登入,請聯絡防火牆管理者以取得指引。
-
SSH 服務不在執行中
您可以透過使用 IPMI 遠端主控台登入裸機伺服器並執行
sudo systemctl status sshd
,來驗證 SSH 服務是否在執行中。 如果 SSH 服務不在執行中,請使用下列步驟來啟動它。-
請使用下列其中一個指令來重新啟動服務。
- 若為 Ubuntu 或 Debian Linux,請執行
sudo systemctl start ssh.service
。 - 若為 RHEL 及 CentOS Linux,請執行
sudo systemctl start sshd.service
。
- 若為 Ubuntu 或 Debian Linux,請執行
-
請驗證 SSH 服務正在接聽,且它是正確的埠。 埠是預設埠 22 或 SSH 服務使用的任何埠。 請使用下列指令。
netstat -anlp | grep ssh
下列範例使用埠 22。
netstat -anlp | grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1125/sshd
-