Ubuntu更新包后导致SSH修改端口失效问题排查记录

Ubuntu更新包后导致SSH修改端口失效问题排查记录
最新回答
浅笑等壹个晴天

2023-06-23 09:50:43

Ubuntu更新包后SSH修改端口失效问题排查记录

在Ubuntu系统中,定期更新软件包是维护系统安全和稳定性的重要措施。然而,在一次更新后,我遇到了SSH远程连接失败的问题,具体表现为修改后的SSH端口无法访问,而服务器的其他端口却能正常响应。经过一系列排查和测试,最终找到了问题的根源并成功解决。以下是详细的排查记录:

一、问题初步判断

  1. 现象描述

    SSH远程连接失败,提示端口拒绝连接。

    服务器其他端口正常访问。

  2. 初步判断

    由于之前修改了SSH默认端口,怀疑更新包后sshd_config配置被覆盖。

二、检查并修改sshd_config配置

  1. 登录服务器

    通过终端登录到服务器。

  2. 检查sshd_config文件

    使用cat /etc/ssh/sshd_config命令查看配置文件。

    发现配置确实被重置为默认22端口。

  3. 修改配置文件

    将Port修改为之前设置的自定义端口(如1234)。

    禁用密码登录,启用密钥认证。

  4. 重启SSH服务

    使用systemctl restart ssh.service命令重启SSH服务。

    遇到报错:“but its triggering units are still active: ssh.socket”。

三、排查ssh.socket问题

  1. 了解ssh.socket

    ssh.socket是一个systemd socket单元文件,用于管理OpenSSH服务的按需启动功能。

    它通过监听网络端口来动态启动ssh.service,避免SSH服务一直运行占用资源。

  2. 检查ssh.socket配置

    使用cat /usr/lib/systemd/system/ssh.socket命令查看ssh.socket配置文件。

    发现ListenStream端口仍为默认22,需要修改为自定义端口(如1234)。

  3. 修改ssh.socket配置

    将ListenStream修改为自定义端口。

  4. 刷新并重启服务

    使用systemctl daemon-reload命令刷新配置。

    使用systemctl restart ssh.socket命令重启ssh.socket服务。

    使用systemctl enable ssh.socket命令将ssh.socket设置为自启。

四、测试与验证

  1. 测试SSH连接

    使用自定义端口尝试连接SSH,验证是否成功。

  2. 备用方案

    如遇ssh.socket相关问题无法解决,可考虑禁用ssh.socket,直接使用ssh.service。

    停止并禁用ssh.socket服务。

    启动并启用ssh.service服务。

五、总结

本次SSH端口修改失效问题主要由更新包后sshd_config和ssh.socket配置被重置导致。通过检查并修改这两个配置文件,成功解决了问题。在排查过程中,了解到了ssh.socket的作用和配置方法,为今后的系统维护提供了宝贵经验。如时间充裕,建议深入研究ssh.socket的配置和使用,以实现更灵活和高效的SSH服务管理。如不想折腾,可直接禁用ssh.socket,使用传统的ssh.service模式。