返回

在Ubuntu24.04中修改SSH监听端口

在 Ubuntu 24.04 版本中,如果你尝试过修改 SSH 监听端口,可能会发现传统的修改 /etc/ssh/sshd_config 配置文件并重启 SSH 服务的方式失效了。

问题所在

在 Ubuntu 24 版本,为了优化性能,SSH 服务默认采用了 systemd 的套接字激活机制。

对于SSH,这里的套接字激活机制是指,使sshd.socket始终监听端口,sshd.service不监听端口,当有连接请求传入时,systemd会激活sshd.service服务。

相比传统的sshd.service常驻监听端口的方式,套接字激活机制可以减少sshd.service的资源占用。

解决方案

在 Ubuntu 24.04 中要修改 SSH 监听端口,可以通过修改新引入的sshd.socket,也可以设置禁用这一新增的 SSH 套接字激活机制。

法一 修改Port同时配置Socket

先按照传统方式修改/etc/ssh/sshd_config配置文件,修改Port配置项,然后修改/lib/systemd/system/ssh.socket文件,将ListenStream配置项的端口修改为你修改的Port端口。详细步骤如下:

  1. 修改 SSH 配置文件:

    sudo vim /etc/ssh/sshd_config
    

    修改或新增Port配置项:

    Port 2222
    
  2. 修改 SSH Socket 配置文件:

    sudo vim /lib/systemd/system/sshd.socket
    

    修改ListenStream配置项:

    ListenStream=0.0.0.0:2222
    ListenStream=[::]:2222 # IPv6
    
  3. 重启 SSH 服务:

    sudo systemctl daemon-reload
    sudo systemctl restart ssh.socket
    

然后可以通过sudo ss -tuln | grep 2222检查 SSH 是否已经监听在新端口上,检查修改是否生效。

法二 禁用套接字激活机制

也可以直接禁用sshd.socket来恢复传统的sshd.service监听端口的方式。

sudo systemctl disable ssh.socket
sudo systemctl stop ssh.socket

然后重启 SSH 服务:

sudo systemctl restart ssh

这样就可以恢复传统的sshd.service监听端口的方式。

结语

虽然 systemd 对 SSH 的套接字激活机制可以优化性能,但是对于开发测试环境或者一些特殊场景,有时候并不太方便,况且 SSH 服务对性能的影响并不是很大。

所以,直接禁用套接字激活机制可能是更方便的解决方案。

参考链接

Licensed under CC BY-NC-SA 4.0