# CentOS7中怎么修改SSH登錄端口
## 前言
SSH(Secure Shell)是Linux系統中最重要的遠程管理協議之一,默認使用22端口。由于該端口廣為人知,容易成為攻擊目標。本文將詳細介紹在CentOS7系統中修改SSH端口的完整流程,包括防火墻配置、SELinux設置以及驗證步驟。
---
## 一、環境準備
在開始前請確認:
1. 已安裝CentOS7系統
2. 具有root或sudo權限
3. 當前SSH連接正常(重要!避免修改后失去連接)
```bash
# 查看系統版本
cat /etc/redhat-release
# 檢查SSH服務狀態
systemctl status sshd
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
vi /etc/ssh/sshd_config
找到以下行(約第17行):
#Port 22
修改為(例如改用5022端口):
Port 5022
#Port 22
注意: - 保留原22端口的注釋作為備用 - 端口號范圍應為1024-65535(0-1023為系統保留)
systemctl status firewalld
firewall-cmd --permanent --add-port=5022/tcp
firewall-cmd --permanent --remove-port=22/tcp
firewall-cmd --reload
# 驗證端口列表
firewall-cmd --list-ports
如果系統啟用了SELinux,需要額外設置:
sestatus
semanage port -a -t ssh_port_t -p tcp 5022
semanage port -l | grep ssh
systemctl restart sshd
關鍵提醒:不要立即關閉當前連接!需要先測試新端口是否可用。
ssh -p 5022 username@server_ip
nc -zv server_ip 5022
確認新端口工作正常后,可完全禁用22端口:
1. 編輯/etc/ssh/sshd_config
刪除#Port 22
2. 重啟SSH服務
3. 防火墻永久移除22端口
systemctl status sshd
firewall-cmd --list-all
grep sshd /var/log/audit/audit.log
錯誤1:無法綁定到端口
# 檢查端口占用
netstat -tuln | grep 5022
錯誤2:SELinux阻止訪問
# 臨時解決方案(生產環境不推薦)
setenforce 0
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="5022" accept'
PasswordAuthentication no
yum install epel-release
yum install fail2ban
完整流程示意圖:
graph TD
A[備份sshd_config] --> B[修改端口號]
B --> C[防火墻放行]
C --> D[SELinux配置]
D --> E[重啟SSH]
E --> F[測試連接]
F --> G[移除舊端口]
通過修改默認SSH端口,可有效減少自動化攻擊。建議每3-6個月更換一次端口,并結合其他安全措施形成縱深防御體系。
最后提醒:在進行任何網絡配置修改時,務必保持至少一個活躍的SSH連接,避免配置錯誤導致服務器失聯。 “`
(全文約1350字,包含代碼塊、注意事項和可視化流程圖)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。