Loading...

Linux【Ubuntu】修改ssh默认端口

前言

最近阿里云的“安全警告”短信快把我轰炸了:“ECS存在非常用地登录”。起因很简单:为了方便,我将 22 端口对全网开放。结果不出所料,被那些全球流窜的扫描脚本(俗称“撞库党”)盯上了。虽然我早已禁用了密码登录、改用密钥对认证,但这依然防不住他们 24 小时不停地“敲门”。我也尝试过在安全组限制 IP,但家宽的动态 IP 每天变样,且 GitHub Actions 的连接 IP 也是动态分布的,手动加白名单简直是运维地狱。

base64

后来想到了一个折中的办法 改掉默认的 SSH 端口(22)。这应该能直接过滤掉 90% 以上的自动化扫描。

方法

由于服务器发行版是 Ubuntu 24.04,所以以下办法只适用于 Ubuntu 其他发行版暂未测试。

如果你发现修改了 /etc/ssh/sshd_config 但重启后端口没变,那是因为从 Ubuntu 22.10 开始,SSH 的启动逻辑发生了变化:它引入了 systemd 监听模式(Socket-based activation)

简单来说,以前是 sshd 进程自己管端口,现在是 systemd 帮它管。

Ubuntu 22.10以下

编辑 sshd_config

sudo vim /etc/ssh/sshd_config

去掉Port 22的注释,改为你想要的端口

base64

保存后执行(注意开启此端口的防火墙)

systemctl daemon-reload
systemctl restart sshd

Ubuntu 22.10以上

在Ubuntu 22.10以上版本,需要改ssh.socket这个文件,在路径:/usr/lib/systemd/system/ 下找到并修改它,将里面ListenStream=22改掉ListenStream=xxx,然后执行保存

base64

base64

然后重载一下配置,重启

systemctl daemon-reload
systemctl restart ssh.socket

结语

最后,修改端口虽然不是万能的“绝对安全”,但它起码能有效防止刷端口脚本[胜利]

0

回到顶部