← [ BACK_TO_NOTES ]

专题归档 · 2026 年 7 月(编辑分组,非实际写作日期)

Ubuntu SSH 改了端口却连不上:被忽略的 socket activation

一次 SSH 端口变更中 sshd_config、systemd generator 与手工 override 的冲突,以及保留救援会话的意义。

配置文件显示新端口,实际却没监听

旧排障记录描述了 Ubuntu 24.04 上的一个陷阱:sshd -T 能读到新端口,ss -tlnp 却看不到监听;进一步操作之后,ssh.socket 甚至因 Address already in use 失败。原来的 SSH 会话还在,但新连接进入不了服务器。

关键不在于端口数字,而在于是谁负责监听这个端口。

两份配置都想监听同一个端口

该环境启用了 systemd socket activation。系统的 generator 已经根据 sshd 配置生成了一份 ssh.socket 监听配置;如果又手工创建一个重复的 ListenStream override,就可能让同一个 socket 被定义两遍,最终在绑定时撞上自己。

我因此考虑撤去多余的手工 override,让 generator 保持单一事实来源,再重新加载 systemd 并检查新端口是否确实出现。

为什么我会把“保留旧 SSH 窗口”当作第一步

已有连接不依赖 ssh.socket 再为它创建一次新监听,这给恢复工作留了窗口;一旦把所有会话都关掉,排障就只能依靠带外控制台或其他仍可达的管理通道。

这个案例和“登录阶段被 Fail2ban 误封”表现相似,但不等于同一个根因。Oracle VPS 折腾日记里已经记录了另一次 Fail2ban 问题,排查时必须分别验证监听状态与封禁列表。

这类问题还和 Ubuntu 版本、systemd socket 配置及实际部署方式有关。排查时不能只看配置文件中的端口,还需要核对系统最终监听了什么。

创建于 2026/7/21 更新于 2026/10/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本