【解决】Ubuntu SSH Server 修改默认端口无效

        最近安装了 Ubuntu 23.04 Desktop,但是发现根据常规方法修改 sshd_config 无效,所以记录本次的可行方案。

适用前提:Ubuntu 22.10 以上


原因

        As of version 1:9.0p1-1ubuntu1 of openssh-server in Kinetic Kudu (Ubuntu 22.10),

OpenSSH in Ubuntu is configured by default to use systemd socket activation.

       从Kinetic Kudu (ubuntu 22.10)中openssh-server的版本1:9.0p1-1ubuntu1开始,

Ubuntu中的openssh默认配置为使用systemd socket激活。

https://discourse.ubuntu.com/t/sshd-now-uses-socket-based-activation-ubuntu-22-10-and-later/30189

分析

        因此,sshd 的监听任务就转交给了 ssh socket,修改 sshd_config 中的 Port 项自然无效(意思是其他的配置项还有用)。

        注意:此版本后,sshd的服务名变成了ssh。(程序名没变)

 方案

对此,提供的两种解决方案是:

一、还原 sshd 的功能,让 sshd 自己监听端口

        但是这样做会比系统托管的socket端口监听稍微更消耗一点内存(参考文章的第一段)

# 修改你的sshd配置
sed -i /etc/ssh/sshd_config -e 's/.*\bPort\b\s\+[0-9]\+.*/Port 22666/'
# 或者
vi /etc/ssh/sshd_config


# “注释” 掉 sshd 对 socket 的依赖
mv /etc/systemd/system/ssh.service.d/ /etc/systemd/system/ssh.service.d.disabed/

# 分别启用和禁用 sshd 和 socket,重启 sshd
systemctl disable --now ssh.socket
systemctl enable  --now ssh.service
systemctl reload ssh.service

# 测试
ssh $USER@localhost -p 22666

        对于此方案的恢复操作我也贴出来吧:

# 取消 “注释”
mv /etc/systemd/system/ssh.service.d.disabed/ /etc/systemd/system/ssh.service.d/
systemctl daemon-reload

# 分别启用和禁用,重启 socket
systemctl enable  --now ssh.socket
systemctl disable --now ssh.service
systemctl restart ssh.socket

# 测试
ssh $USER@localhost -p 22

二、直接修改新的监听侧的配置文件

        这个相对无痕,但更容易忘,而且到时候忘了就又不会改了~~

# 执行下面的命令,修改 ListenStream= 后面的端口号。
vi /usr/lib/systemd/system/ssh.socket

# 重载配置
systemctl daemon-reload

# 重启 socket
systemctl restart ssh.socket

# 测试
ssh $USER@localhost -p 22666

感谢阅读,转载请注明来源~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ervoconite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值