马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、为什么要动 SSH 端口
SSH 默认走 22 端口,这个值是全世界脚本机器人的共识:只要把 22 暴露到公网,几天内就会收到大量针对弱口令的登录尝试。把端口挪到一个高位端口,不能从根本上挡住扫描者(端口是明摆着能被扫出来的),但能过滤掉那些只认 22 的自动化爆破,属于成本最低的一档合规加固。
另外一些场景还会刻意躲开 22,比如云厂商的安全组策略里,或者公司出口只放通了少数几个端口的机器上。下面以把 22 改成 2024 为例,走一遍完整流程。
二、改配置文件
SSH 服务端的配置文件在 /etc/ssh/sshd_config,找到 Port 这一行,把注释去掉并改成新端口。要提醒一句:先把 22 注释掉而不是直接删,万一新端口没生效还能回退:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
vim /etc/ssh/sshd_config
按下面这样写:
#Port 22
Port 2024
保存退出。有些发行版还会额外有一份 /etc/ssh/sshd_config.d/ 下的内嵌片段,优先级比主配置高,改动前用这条看一眼:
ls -l /etc/ssh/sshd_config.d/
三、重启 sshd
systemctl restart sshd
systemctl status sshd
这里有个坑:服务重启成功的输出,不代表新端口已经能连。稳妥做法是保持当前这条连接不断开,另开一个终端用新端口试连,确认能进再去动旧连接。
四、重启失败时:SELinux 没放端口
在开了 SELinux 的系统上(CentOS、RHEL、Rocky 这类常见),改完端口直接重启 sshd 往往会失败,日志 里是"地址已占用"或者绑定被拒绝。原因是 SELinux 策略里只认 22 属于 ssh_port_t 类型,新端口没被登记,端口绑定就被策略拦了。
解决办法是往策略里补一条端口规则:
semanage port -a -t ssh_port_t -p tcp 2024
这条命令的作用是把 TCP 2024 这个端口标记为 ssh_port_t 类型,告诉 SELinux"这个端口是给 SSH 用的",之后 sshd 绑定它就不会被拦。想复查已经登记了哪些端口,用:
semanage port -l | grep ssh_port_t
如果系统里压根没有 semanage 这个命令(精简安装经常没有),装上 policycoreutils 或者对应的 selinux-policy 包即可:
yum install policycoreutils
# Debian 系则是
apt install policycoreutils
五、防火墙别忘了放通
端口改了,防火墙还拦着 22 的话一样连不上。两个方向选一个:
- 直接放行新端口:firewall-cmd 加 permanent 规则再 reload。
- 或者干脆停掉 firewalld,但生产环境一般不推荐。
放行示例:
firewall-cmd --permanent --add-port=2024/tcp
firewall-cmd --reload
如果是云服务器,记得同时去控制台的安全组里把新端口加上,云安全组优先级更高,会先于系统防火墙拦截。
六、连接测试
客户端用 -p 指定端口:
ssh -p 2024 user@服务器IP
ssh -p 2024 -i ~/.ssh/id_rsa user@服务器IP
能正常提示输入密码、能进到 shell,说明整条链路通了。scp 和 sftp 同理,都带 -p 参数。
七、回退与注意事项
- 先别急着把 22 那行的注释彻底删掉,留着方便紧急回退。
- 改端口前确认运维手册、监控
告警、跳板机策略、自动化运维脚本里的 SSH 地址都同步改掉,不然会出现"改着改着自己先断了"。
- 高位端口也别选太常见的(比如 3306、8080),避免和别的服务抢。
- 如果还要防爆破,端口这一步只是最基础的一层,真正扛事的还是密钥登录 + fail2ban。
八、小结
改 SSH 端口的完整动作是四步:改 sshd_config 的 Port、重启 sshd、必要时用 semanage 把新端口登记进 SELinux 策略、防火墙和安全组放通,最后用 ssh -p 验证。其中第二步之后保持旧连接不断开、另开窗口试新端口,是避免把自己锁在门外的关键习惯。
qidao123.com企服评测-应用市场 编辑提示
|