理解 SSH 改端口不生效的问题及解决方案


问题表现

  • 修改 /etc/ssh/sshd_config 中的 Port 例如 Port 3212
  • 重启 SSH 服务:sudo systemctl restart sshd
  • 使用 sudo ss -tnlp | grep sshd 发现 SSH 依然监听 22 端口。
  • 服务器上存在 ssh.socket 单元,systemctl status ssh.socket 显示该服务处于活跃状态。

根本原因

现代 systemd 系统采用了 socket 激活机制(socket activation) 来管理 SSH 服务。具体来说:

  • ssh.socket 单元会提前监听 TCP 端口(默认 22),而不是由 sshd 自己监听。
  • 当有连接请求时,systemd 触发启动 sshd 进程来处理连接。
  • 这样即使你修改了 sshd 的配置文件,ssh.socket 仍然在监听默认的 22 端口,导致端口修改无效。

ssh.socket 的优点

  • 按需启动 sshd,节省系统资源。
  • 快速响应连接请求。
  • 方便 systemd 集中管理和日志审计。
  • 提升服务稳定性和自动恢复能力。

解决方案

方法一:禁用 ssh.socket,使用传统 sshd 监听端口

1
2
3
sudo systemctl disable ssh.socket
sudo systemctl stop ssh.socket
sudo systemctl restart ssh.service

方法二:修改 ssh.socket 配置监听新端口

  • 编辑 ssh.socket 文件(路径一般为 /usr/lib/systemd/system/ssh.socket 或 /etc/systemd/system/ssh.socket)。
  • 修改 [Socket] 部分的 ListenStream=22 为你想要的端口,比如 ListenStream=3212。
  • 重新加载 systemd 配置:
1
2
3
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo systemctl restart ssh.service

额外提示

  • 使用 ssh.socket 是 systemd 的现代管理方式,适合资源有限或连接不频繁的服务器。
  • 直接禁用 ssh.socket 更适合需要自定义 SSH 端口的场景,操作更简单。
  • 修改端口后,别忘了开放防火墙相应端口。

终端UI开发中Emoji字符错位问题的分析与解决

事情的起因

在开发基于Bubble Tea框架的FRP CLI UI项目时,终端界面也要搞得好看点。于是就想用Emoji图标来装饰菜单,让界面看起来更现代化一些。结果没想到,这一搞就被Emoji给坑了个半死,整个界面的布局完全乱套了

Read more

Hexo 站点的SEO配置

Hexo 站点的SEO配置
Hexo Blog 配置SEO主要用到两个插件hexo-generator-sitemap,hexo-submit-urls-to-search-engine

Read more

python networkx

networkx networkx是一个用Python语言开发的图论与复杂网络建模工具,利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。
networkx支持创建简单无向图、有向图和多重图(multigraph);
内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富,简单易用

新套利引擎使用 networkx 来实现.
基本目标: 给出任意2个 currency, 计算两个 currency 之间的利润最大的交易路径(跨cex)

Read more

python 性能分析

Py-Spy 是一个用于 Python 的性能分析工具,它使用堆栈跟踪来收集和显示 Python 代码的运行时间。

Read more

OO模块集成 Jetcache 缓存问题

活动Action开发过程中碰到缓存使用的问题,Action中的代码基本从原 service 中迁移,
Jetcache 缓存的注解对Spring 容器内的类生效(现在代码中都作用在@service标记类中),但像Action 这些类手动创建出来实例缓存注解就失效了;

Read more