0x00 前言
在从Debian11升级到Debian12时,出现了一些遇到之外的问题。SSH服务器端口无法修改,或者说是修改以后依旧按照原始的端口(22端口)进行监听,如果手动stop然后start的话,有时候又会按照正常的配置文件进行监听,但是重启以后依旧恢复默认端口。
0x01 解决方案
先停止并关闭ssh.socket
systemctl stop ssh.socket
systemctl disable ssh.socket
再手动打开默认的sshd服务
systemctl enable ssh.service
systemctl restart ssh.service
在执行命令的时候有可能会得到这两行提示
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
你可以手动执行一下/lib/systemd/systemd-sysv-install enable ssh
0x02 为什么
systemd现在已经变成一个巨无霸了,这个东西提出大概有一段时间了(好几年了)。
这个东西现在兼具监听接口,处理各种各样的服务,应用自启动管理,服务管理,触发器,检查用户登录等等各种各样的能力。
但是这些东西的聚集已经造成不太了解这个东西的用户困惑,例如这里的这个问题。
为什么没有正常监听你修改的配置文件?
因为在systemd的服务目录里面有一个ssh.socket服务,这个服务用来提供一个简单的监听,然后如果有人访问这个端口再拉起一个ssh服务端进行服务。
这个就和以前ssh服务端一直常驻后台运行有了一定的不同,变成有需要才运行,没有需要就一直用systemd维持监听。
但是这在某些比较复杂的场合不太适用,而且节约的内存实际上能提供的空间也没有多少。
本着简单修改的原则,直接删除这个服务,使用原来的监听我觉得在使用上更加符合要求。
留言