Linux系統修改ssh遠程端口的辦法

修改 Linux 系統的 SSH 遠程端口是提高服務器安全性的一種常見做法。通過更改默認端口(22)為其他端口,可以有效減少暴力破解攻擊的風險。以下是詳細步驟以及注意事項:
1. 修改 SSH 遠程端口的步驟
1.1 登錄服務器
- 使用當前的 SSH 端口登錄服務器(默認端口為 22):
如果是非 root 用戶,請使用具有 sudo 權限的賬戶登錄。bash
ssh root@<服務器IP地址> -p 22
1.2 修改 SSH 配置文件
-
使用文本編輯器打開
sshd_config文件:bashsudo nano /etc/ssh/sshd_config或者:
bashsudo vi /etc/ssh/sshd_config -
找到以下行(如果沒有,則手動添加):
plaintext#Port 22- 去掉
#注釋符號。 - 將端口號
22修改為你想要的端口號(例如2022或2222),如下:plaintextPort 2022
- 去掉
-
確保以下設置已啟用并檢查是否存在(防止配置沖突):
plaintextAddressFamily inet PermitRootLogin yes # 如果允許 root 登錄,確保此項為 yes
1.3 修改防火墻規則
更改端口后,需要確保防火墻允許新端口的通信,否則可能導致無法連接。
1.3.1 使用 firewalld(CentOS/RedHat 系統)
-
添加新端口規則(以
2022為例):bashsudo firewall-cmd --permanent --add-port=2022/tcp -
移除默認端口(22)規則(如果不再需要):
bashsudo firewall-cmd --permanent --remove-port=22/tcp -
重新加載防火墻規則:
bashsudo firewall-cmd --reload
1.3.2 使用 iptables(傳統防火墻)
-
添加新端口規則:
bashsudo iptables -A INPUT -p tcp --dport 2022 -j ACCEPT -
移除默認端口規則(如果不再需要):
bashsudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT -
保存規則(確保重啟后規則仍生效):
bashsudo iptables-save > /etc/iptables/rules.v4
1.3.3 使用 ufw(Ubuntu/Debian 系統)
-
允許新端口:
bashsudo ufw allow 2022/tcp -
刪除默認端口(如果不再需要):
bashsudo ufw delete allow 22/tcp -
檢查并啟用防火墻:
bashsudo ufw enable
1.4 重啟 SSH 服務
-
修改完成后,重啟 SSH 服務以應用更改:
bashsudo systemctl restart sshd或:
bashsudo service sshd restart -
如果使用 Ubuntu/Debian,服務名可能是
ssh:bashsudo systemctl restart ssh
1.5 測試新的端口
-
打開新的 SSH 會話,測試是否能通過新端口連接:
bashssh root@<服務器IP地址> -p 2022注意:在測試新端口成功前,不要關閉當前的 SSH 會話,以免配置錯誤導致無法連接。
-
如果測試成功,可以關閉舊的端口會話。
2. 常見問題和解決方法
2.1 修改后無法連接
-
檢查防火墻是否開放了新端口:
- 使用以下命令檢查防火墻規則:
bash
sudo firewall-cmd --list-ports # 適用于 firewalld sudo ufw status # 適用于 ufw
- 使用以下命令檢查防火墻規則:
-
檢查 SSH 服務狀態:
- 確保 SSH 服務已啟動且無錯誤:
bash
sudo systemctl status sshd
- 確保 SSH 服務已啟動且無錯誤:
-
檢查端口占用情況:
- 確保新端口未被其他服務占用:
bash
sudo netstat -tuln | grep 2022
- 確保新端口未被其他服務占用:
2.2 忘記新端口號
- 如果忘記了新端口號,可以通過以下方法查看:
- 登錄服務器的控制臺(通過云服務商提供的 Web 控制臺)。
- 查看 SSH 配置文件:
bash
cat /etc/ssh/sshd_config | grep Port
3. 安全性優化建議
除了修改默認 SSH 端口,還可以采取以下措施增強 SSH 安全性:
3.1 禁用密碼登錄,啟用密鑰登錄
- 生成 SSH 密鑰對(如果尚未生成):
bash
ssh-keygen -t rsa -b 4096 - 將公鑰上傳到服務器:
bash
ssh-copy-id -i ~/.ssh/id_rsa.pub root@<服務器IP> - 修改 SSH 配置文件,禁用密碼登錄:
找到并修改以下項:bash
sudo nano /etc/ssh/sshd_configplaintextPasswordAuthentication no - 重啟 SSH 服務:
bash
sudo systemctl restart sshd
3.2 限制登錄 IP
-
修改防火墻規則,只允許特定 IP 地址訪問 SSH:
- 使用
firewalld:bashsudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='<你的IP>' port port=2022 protocol=tcp accept"- 替換
<你的IP>為你的公網 IP 地址。
- 替換
- 重載防火墻:
bash
sudo firewall-cmd --reload
- 使用
-
或編輯
/etc/hosts.allow文件:plaintextsshd: <你的IP>
3.3 啟用 Fail2ban
-
安裝并配置 Fail2ban,自動封禁多次嘗試登錄失敗的 IP:
bashsudo yum install epel-release -y sudo yum install fail2ban -y -
啟動并配置:
bashsudo systemctl start fail2ban sudo systemctl enable fail2ban
4. 總結
修改 SSH 端口是提升服務器安全性的有效措施,但需要注意以下幾點:
- 修改端口后,確保防火墻規則已更新,并測試新端口連接。
- 配合其他安全措施(如密鑰登錄、IP 限制、Fail2ban)進一步提升安全性。
- 在修改前備份 SSH 配置文件,避免因配置錯誤導致服務器無法訪問:
bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
通過以上步驟,你可以安全地修改 SSH 端口并保護服務器免受暴力破解的威脅!

浙公網安備 33010602011771號