在之前的文章中写到过,修改SSH端口号需要调整/etc/ssh/sshd_config文件,但是在Ubuntu 2404上发现就不行了,即使修改了,再连接上去还是22号端口。
这是因为在这一版的systemd socket(ssh.socket)正在监听 22 端口并按需启动服务,你需要禁用它、修改它的配置,并重启服务才能使用。
输入以下命令,打开文件,调整ssh sockert配置中的ListenStream=22修改掉你想要更换的端口号
vim /usr/lib/systemd/system/ssh.socket
例如我就修改为了8022端口

然后执行以下命令对systemd进行重置跟重启服务。
sudo systemctl daemon-reload sudo systemctl restart ssh
再执行以下命令进行检查。
sudo ss -ntlp | grep sshd # 或者 sudo ss -tulnp | grep ssh
没问题以后再调整防火墙。
sudo ufw allow 8022/tcp sudo ufw reload
这样就可以了。
另外:
1、/etc/ssh/sshd_config文件也是要修改的,修改完记得执行以下命令,可以检查配置是否正确。
sudo sshd -t
2、如果systemd socket(ssh.socket)的配置文件不对,可以更换为
vim /lib/systemd/system/ssh.socket
3、除了修改以上配置文件,也可以禁用ssh.socket
sudo systemctl stop ssh.socket sudo systemctl disable ssh.socket sudo systemctl restart ssh
4、重启ssh服务命令可能每个版本不同。如果提示找不到ssh命令,可以更换为
sudo systemctl restart sshd
5、防火墙除了ufw以外,用以前版本的防火墙改成这个命令:
# 使用iptables sudo iptables -I INPUT -p tcp --dport 8022 -j ACCEPT sudo iptables -I OUTPUT -p tcp --sport 8022 -j ACCEPT # 使用firewall sudo firewall-cmd --zone=public --add-port=8022/tcp --permanent sudo firewall-cmd --reload
没了。

本文作者为Nicky,转载请注明。