默認情況下, SSH 偵聽端口 22 。 更改默認 SSH 端口可以降低被自動攻擊的風險,從而為服務器增加額外的安全層。
和更改默認端口相比,將防火墻配置為僅允許從特定主機訪問端口 22 則更加簡單和安全。
本教程介紹如何更改 Linux 中的默認 SSH 端口。我們還將向您展示如何配置防火墻以允許訪問新的 SSH 端口。
更改 SSH 端口
請按照以下步驟更改 Linux 系統上的 SSH 端口:
選擇新的端口號
在 Linux 中,低于 1024 的端口號保留用于眾所周知的服務,并且只能由 root 綁定。雖然您可以使用 1-1024 范圍內的端口進行 SSH 服務,但為了避免將來出現端口分配問題,建議選擇 1024 以上的端口。
在此示例中,將 SSH 端口更改為 5522 ,當然您可以選擇任何您喜歡的端口。
調整防火墻
在更改 SSH 端口之前,首先需要調整防火墻以允許新 SSH 端口上的流量。
如果您使用的是 Ubuntu 的默認防火墻配置工具 UFW , 請運行以下命令來打開新的 SSH 端口:
sudo ufw allow 5522/tcp
在 CentOS 中,默認的防火墻管理工具是 FirewallD 。要打開新端口,請運行以下命令:
sudo firewall-cmd --permanent --zone=public --add-port=5522/tcp
sudo firewall-cmd --reload
CentOS 用戶還需要調整 SELinux 規則以允許新的SSH端口:
sudo semanage port -a -t ssh_port_t -p tcp 5522
如果您使用 iptables 作為防火墻,則以下命令將打開新的 SSH 端口:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
編輯 SSH 配置
使用文本編輯器打開 SSH 配置文件 /etc/ssh/sshd_config :
sudo nano /etc/ssh/sshd_config
搜索以 Port 22 開頭的行。在大多數情況下,此行將以 # 開頭。刪除 # 并輸入將用于代替標準 SSH 端口 22 的新 SSH 端口號。
Port 5522
修改 SSH 配置文件時要格外小心。不正確的配置可能導致 SSH 服務無法啟動。
完成后保存文件并重新啟動 SSH 服務以應用更改:
sudo systemctl restart ssh
在 CentOS 中, ssh 服務命名為 sshd :
sudo systemctl restart sshd
要驗證 SSH 守護程序是否正在偵聽新端口 5522 ,請鍵入:
ss -an | grep 5522
輸出應該如下所示:
tcp LISTEN 0 128 0.0.0.0:5522 0.0.0.0:*
tcp ESTAB 0 0 192.168.121.108:5522 192.168.121.1:57638
tcp LISTEN 0 128 [::]:5522 [::]:*
使用新的 SSH 端口
現在您已經更改了要登錄遠程的計算機 SSH 端口,您需要在登錄時指定新端口。
使用 -p 選項指定端口:
ssh -p 5522 username@remote_host_or_ip
結論
在本教程中,您學習了如何更改 Linux 服務器上的 SSH 端口。您可能還需要設置基于 SSH 密鑰的身份驗證,不輸入密碼的情況下連接到 Linux 服務器。
如果您經常連接到多個系統,則可以通過在 SSH 配置文件中定義所有連接來簡化工作流程。
如果您遇到問題或有反饋,請在下面留言。