
今天在修改新装的一台 ubuntu server 24 的SSH端口的时候,如图所示一直不生效,SSH 服务在修改 Port 616 后未生效,且日志明确显示仍在监听 22 端口(Server listening on :: port 22),但配置文件中已正确设置了 Port 616。以下是具体分析和解决方案:
问题原因
-
ssh.socket的干扰- 日志中显示
TriggeredBy: ssh.socket,说明 SSH 服务被 systemd 的 socket 机制控制。 - socket 激活模式会强制监听默认端口(22),导致
sshd_config中的Port 616被忽略。
- 日志中显示
-
配置未完全加载
- 虽然执行了
systemctl restart sshd,但未禁用ssh.socket,导致服务仍按旧配置运行。
- 虽然执行了
解决方案
1. 禁用 ssh.socket(关键步骤)
sudo systemctl stop ssh.socket # 停止 socket 监听
sudo systemctl disable ssh.socket # 禁止开机自启
2. 强制重启 SSH 服务
sudo systemctl restart sshd # 重新加载配置
3. 验证端口是否生效
sudo ss -tulnp | grep sshd
- 正常输出应显示:
tcp LISTEN 0 128 *:616 *:* users:(("sshd",pid=2345,fd=3))
4. 检查服务状态
sudo systemctl status sshd
- 确认日志中无
port 22字样,且显示Server listening on :: port 616。
为什么需要重启?
ssh.socket的顽固性:
systemd 的 socket 激活机制会持续监控默认端口(22),即使重启服务也可能被重新拉起。
必须彻底禁用ssh.socket才能让Port 616生效。
长期配置建议
-
显式关闭默认端口
在sshd_config中注释Port 22,避免冲突:#Port 22 # 注释掉默认端口 Port 616 # 取消注释并确保唯一 -
防火墙放行新端口
sudo ufw allow 616/tcp # Ubuntu sudo firewall-cmd --add-port=616/tcp --permanent && sudo firewall-cmd --reload # CentOS -
重启系统(最终保障)
sudo reboot- 确保所有配置在开机时正确加载。
总结
- 直接原因:
ssh.socket强制占用 22 端口,覆盖了sshd_config的配置。 - 修复方法:禁用
ssh.socket+ 重启服务(或系统)。 - 验证命令:
ss -tulnp | grep sshd和journalctl -u sshd。
执行上述步骤后,Port 616 将确定生效。如果仍有问题,可能是 SELinux/AppArmor 限制,需进一步检查安全策略。
附说明
1. 禁用 ssh.socket 的直接影响
(1)服务启动方式变化
- 当前状态(图片中可见):
TriggeredBy: ssh.socket # 显示 SSH 服务由 socket 激活机制控制- 此时 SSH 服务 不持续运行,仅在收到连接请求时通过
ssh.socket唤醒。
- 此时 SSH 服务 不持续运行,仅在收到连接请求时通过
- 禁用后:
- SSH 服务将改为 常驻运行(传统模式),直接监听配置文件中指定的端口(如
616)。
- SSH 服务将改为 常驻运行(传统模式),直接监听配置文件中指定的端口(如
(2)端口监听行为
- 当前问题:
即使sshd_config设置了Port 616,日志仍显示Server listening on :: port 22,说明ssh.socket强制覆盖了配置。 - 禁用后:
SSH 服务会严格遵循sshd_config的端口设置(如616),不再被22端口绑定。
2. 潜在风险与注意事项
(1)连接延迟(理论风险)
- socket 模式优点:按需启动服务,节省资源。
- 禁用后:服务常驻运行,可能轻微增加内存占用(约 1-2MB,如图中
Memory: 1.4M),但对现代服务器影响可忽略。
(2)依赖 socket 的特殊场景
- 若系统有其他服务依赖
ssh.socket的按需启动特性(极少见),可能导致意外行为。 - 解决方案:
可改用ssh@.service模板服务(需手动配置)。
3. 长期维护建议
- 保留 socket 的替代方案(如需):
在sshd_config中同时保留22和616端口:
然后仅禁用Port 22 Port 616ssh.socket,这样可通过任意端口连接。


5765

被折叠的 条评论
为什么被折叠?



