Linux服务器而言,SSH几乎是管理员每天都会使用的远程管理工具。无论是云服务器、VPS、独立服务器还是企业内部Linux主机,SSH都承担着远程登录、文件传输、系统维护以及自动化运维的重要工作。
然而,很多Linux系统在安装完成后都会默认开启22端口作为SSH远程连接入口。由于22端口是全球公开且众所周知的默认SSH端口,因此也成为网络扫描器、暴力破解程序以及恶意攻击脚本重点关注的目标。
如果查看服务器日志,经常会发现类似以下内容:
Failed password for root
Invalid user admin
Connection closed by authenticating user
这些记录往往意味着服务器正在遭受自动化扫描和密码爆破攻击。
因此,很多运维人员在服务器上线后做的第一件事情,就是修改SSH默认端口。虽然修改SSH端口无法从根本上解决安全问题,但能够有效减少大量自动化攻击请求,提高服务器的整体安全性。
本文将详细介绍Linux系统修改SSH远程端口的方法、注意事项以及相关安全加固措施。
为什么要修改SSH默认22端口
很多新手会产生疑问:
既然SSH本身已经加密,为什么还要修改端口?
原因主要来自于网络环境中的攻击行为。
互联网每天都有大量自动扫描程序不断探测开放端口。
对于攻击者来说:
- 22端口通常意味着SSH服务
- 80端口通常意味着Web服务
- 3306端口通常意味着MySQL数据库
- 6379端口通常意味着Redis
因此22端口几乎成为自动化攻击工具的默认目标。
修改SSH端口后虽然不能做到绝对隐藏,但能够降低被扫描发现的概率。
实际运维中,经常会出现这样的情况:
修改端口之前:
/var/log/auth.log
每天产生数千次非法登录尝试。
修改端口之后:
非法连接数量可能下降90%以上。
因此修改SSH端口属于服务器基础安全配置之一。
修改SSH端口前必须注意的事项
在正式修改之前,需要提前做好准备。
最重要的一点:
不要直接关闭当前SSH会话。
很多管理员修改完成后立即退出终端,结果发现新端口无法连接,最终导致服务器失联。
正确做法是:
保留当前SSH窗口不关闭。
然后:
- 修改配置
- 重启SSH服务
- 测试新端口
- 确认连接正常
- 再关闭旧会话
这样即使配置出错,也能通过当前窗口恢复。
查看当前SSH端口
首先确认系统当前SSH运行状态。
执行:
ss -tunlp | grep ssh
或者:
netstat -tunlp | grep ssh
输出类似:
LISTEN 0 128 0.0.0.0:22
说明SSH正在监听22端口。
也可以查看配置文件:
cat /etc/ssh/sshd_config | grep Port
结果可能为:
#Port 22
如果前面带有#号,说明系统使用默认22端口。
Linux修改SSH端口的方法
SSH服务配置文件通常位于:
/etc/ssh/sshd_config
使用编辑器打开:
sudo nano /etc/ssh/sshd_config
或者:
sudo vim /etc/ssh/sshd_config
找到:
#Port 22
修改为:
Port 2222
例如使用2222端口。
也可以使用:
Port 52022
或者:
Port 10022
只要端口未被占用即可。
SSH端口选择建议
理论上端口范围:
1-65535
但并非所有端口都适合使用。
建议选择:
10000以上
例如:
10022
12022
22022
52022
60022
避免使用:
21
25
80
443
3306
6379
8080
这些端口通常已经被其他服务占用。
修改后保存退出。
检查配置文件语法
在重启服务之前建议检查配置。
执行:
sshd -t
如果没有任何输出:
[root@server ~]#
说明配置正常。
如果出现错误:
Bad configuration option
需要返回配置文件检查。
这是非常重要的一步。
很多服务器失联都是因为配置写错后直接重启服务导致。
防火墙放行新SSH端口
仅修改SSH配置还不够。
很多Linux服务器启用了防火墙。
如果忘记放行端口,新SSH连接会被直接拦截。
Ubuntu放行端口
如果使用UFW:
sudo ufw allow 2222/tcp
查看规则:
sudo ufw status
显示:
2222/tcp ALLOW Anywhere
说明已经放行。
CentOS放行端口
如果使用Firewalld:
firewall-cmd --permanent --add-port=2222/tcp
重新加载:
firewall-cmd --reload
查看结果:
firewall-cmd --list-ports
输出:
2222/tcp
即可。
云服务器安全组配置
很多云平台不仅有系统防火墙。
还有云安全组。
例如:
- 阿里云官网
- 腾讯云官网
- Amazon Web Services
- Google Cloud
都需要同步放行新端口。
例如:
协议:TCP
端口:2222
来源:0.0.0.0/0
如果安全组未开放,即使系统配置正确也无法连接。
重启SSH服务
配置完成后重启服务。
Ubuntu:
systemctl restart ssh
CentOS:
systemctl restart sshd
查看状态:
systemctl status sshd
或者:
systemctl status ssh
确认显示:
active (running)
说明启动成功。
验证新端口是否生效
执行:
ss -tunlp | grep ssh
结果类似:
LISTEN 0 128 0.0.0.0:2222
说明SSH已经切换至新端口。
使用新端口登录服务器
Linux客户端:
ssh -p 2222 root@IP地址
例如:
ssh -p 2222 root@192.168.1.10
Windows PowerShell:
ssh -p 2222 root@服务器IP
成功登录后说明修改完成。
关闭22端口
确认新端口可以正常连接后。
返回配置文件:
sudo vim /etc/ssh/sshd_config
确保只保留:
Port 2222
不要同时存在:
Port 22
Port 2222
否则22端口仍然开放。
再次重启SSH服务:
systemctl restart sshd
使用双SSH端口过渡迁移
生产环境中建议采用过渡方式。
例如:
Port 22
Port 2222
SSH支持同时监听多个端口。
重启后:
systemctl restart sshd
此时:
22
2222
均可访问。
等待验证无误后再删除22端口。
这种方式风险最低。
配合密钥认证进一步提升安全性
仅修改端口并不代表绝对安全。
最佳实践是启用SSH密钥认证。
客户端生成密钥:
ssh-keygen -t ed25519
上传公钥:
ssh-copy-id root@服务器
然后修改:
/etc/ssh/sshd_config
找到:
PasswordAuthentication yes
改为:
PasswordAuthentication no
重启:
systemctl restart sshd
这样即使攻击者知道端口,也无法通过密码爆破登录。
禁止Root直接登录
进一步提高安全性。
配置:
PermitRootLogin no
然后创建普通管理员:
adduser admin
赋予sudo权限:
usermod -aG sudo admin
或者:
usermod -aG wheel admin
以后通过普通用户登录再执行:
sudo su -
管理系统。
这样即使遭遇攻击,也能降低风险。
Fail2Ban防暴力破解
很多运维人员会搭配Fail2Ban使用。
安装:
Ubuntu:
apt install fail2ban -y
CentOS:
yum install fail2ban -y
启动:
systemctl enable fail2ban
systemctl start fail2ban
当攻击者多次尝试失败时。
Fail2Ban会自动封禁其IP。
能够进一步减少恶意连接。
如何确认服务器没有暴力破解攻击
查看日志:
Ubuntu:
cat /var/log/auth.log
CentOS:
cat /var/log/secure
统计失败次数:
grep "Failed password" /var/log/secure
或者:
grep "Invalid user" /var/log/secure
修改SSH端口后通常会发现日志明显减少。
这是最直观的效果。
SSH端口修改失败如何恢复
如果修改后无法连接。
但当前SSH窗口尚未关闭。
可以直接恢复:
vim /etc/ssh/sshd_config
改回:
Port 22
然后:
systemctl restart sshd
即可恢复。
如果已经失联。
只能通过:
- 云服务器控制台VNC
- KVM远程管理
- 救援模式
- 单用户模式
重新修复配置。
因此修改前一定要保留当前会话窗口。
修改SSH默认22端口是Linux服务器安全加固中最基础、最有效且成本最低的措施之一。虽然它无法彻底阻止针对性的攻击,但能够显著减少自动化扫描、密码爆破以及恶意探测带来的干扰,从而降低服务器日志压力和安全风险。
在实际运维环境中,更推荐将修改SSH端口与密钥认证、禁止Root直接登录、防火墙策略以及Fail2Ban防护结合使用,形成完整的SSH安全体系。这样不仅能够提高服务器的安全等级,也能够让日常远程管理更加稳定可靠。
对于云服务器、VPS以及企业生产环境来说,SSH安全从来不是单一配置能够解决的问题,而是由端口管理、身份认证、访问控制和日志审计共同构成的防护体系。掌握SSH端口修改方法只是第一步,持续完善服务器安全策略,才是保障业务长期稳定运行的关键。

全球服务器测评



