2023-06-23 09:50:43
Ubuntu更新包后SSH修改端口失效问题排查记录
在Ubuntu系统中,定期更新软件包是维护系统安全和稳定性的重要措施。然而,在一次更新后,我遇到了SSH远程连接失败的问题,具体表现为修改后的SSH端口无法访问,而服务器的其他端口却能正常响应。经过一系列排查和测试,最终找到了问题的根源并成功解决。以下是详细的排查记录:
一、问题初步判断
现象描述:
SSH远程连接失败,提示端口拒绝连接。
服务器其他端口正常访问。
初步判断:
由于之前修改了SSH默认端口,怀疑更新包后sshd_config配置被覆盖。
二、检查并修改sshd_config配置
登录服务器:
通过终端登录到服务器。
检查sshd_config文件:
使用cat /etc/ssh/sshd_config命令查看配置文件。
发现配置确实被重置为默认22端口。
修改配置文件:
将Port修改为之前设置的自定义端口(如1234)。
禁用密码登录,启用密钥认证。
重启SSH服务:
使用systemctl restart ssh.service命令重启SSH服务。
遇到报错:“but its triggering units are still active: ssh.socket”。
三、排查ssh.socket问题
了解ssh.socket:
ssh.socket是一个systemd socket单元文件,用于管理OpenSSH服务的按需启动功能。
它通过监听网络端口来动态启动ssh.service,避免SSH服务一直运行占用资源。
检查ssh.socket配置:
使用cat /usr/lib/systemd/system/ssh.socket命令查看ssh.socket配置文件。
发现ListenStream端口仍为默认22,需要修改为自定义端口(如1234)。
修改ssh.socket配置:
将ListenStream修改为自定义端口。
刷新并重启服务:
使用systemctl daemon-reload命令刷新配置。
使用systemctl restart ssh.socket命令重启ssh.socket服务。
使用systemctl enable ssh.socket命令将ssh.socket设置为自启。
四、测试与验证
测试SSH连接:
使用自定义端口尝试连接SSH,验证是否成功。
备用方案:
如遇ssh.socket相关问题无法解决,可考虑禁用ssh.socket,直接使用ssh.service。
停止并禁用ssh.socket服务。
启动并启用ssh.service服务。
五、总结
本次SSH端口修改失效问题主要由更新包后sshd_config和ssh.socket配置被重置导致。通过检查并修改这两个配置文件,成功解决了问题。在排查过程中,了解到了ssh.socket的作用和配置方法,为今后的系统维护提供了宝贵经验。如时间充裕,建议深入研究ssh.socket的配置和使用,以实现更灵活和高效的SSH服务管理。如不想折腾,可直接禁用ssh.socket,使用传统的ssh.service模式。