云上SSH安全配置:禁用密码登录、修改端口、密钥认证
本内容发表于:2026-07-15 14:25:51
浏览量
1062

云上SSH安全配置:禁用密码登录、修改端口、密钥认证

微信图片_2026-07-15_141524_656.png

去年一个客户找到我,服务器刚上线三天就被入侵了。攻击者通过SSH暴力破解拿到了root密码,服务器变成了挖矿肉鸡,CPU跑满一个月,账单多出好几千块钱。

他说:“我设了密码,还挺复杂的。”

我问他:“密码再复杂,能防住每秒几百次的暴力破解吗?”

SSH端口是每台Linux服务器的必经之路,也是攻击者最常盯上的入口。如果不主动加固,服务器暴露在公网上就等于在喊“来破解我”。

01 SSH暴力破解有多猖獗?

华为云安全中心数据显示,公网服务器每天遭受数千次暴力破解尝试是常态。攻击者用自动化工具(如Medusa、Hydra)搭配常见密码字典,对默认端口22发起高频扫描。有渗透测试工具演示表明,针对弱密码的SSH暴力破解,可以在几分钟内找到有效凭证

攻击者最喜欢的目标

  • 使用默认端口22

  • 允许密码登录

  • 允许root用户直接远程登录

这三条全中,攻击成功率会大幅提升。那家被入侵的客户,三样全占了。

02 第一道防线:禁用密码登录,启用密钥认证

密码可以被猜测、被暴力破解、被钓鱼获取。密钥认证基于非对称加密,私钥由用户持有,不经过网络传输,不存在暴力破解的可能

密钥认证原理

  • 客户端生成密钥对(公钥+私钥)

  • 公钥上传到服务器

  • 登录时,服务器用公钥加密一个随机数发给客户端

  • 客户端用私钥解密,验证通过即登录成功

操作步骤

第一步:生成密钥对

在本地终端执行:

bash

ssh-keygen -t ed25519

一路回车即可,ed25519算法比RSA更短、更快、更安全。如果不支持,可用ssh-keygen -t rsa -b 4096。生成的文件默认存放在~/.ssh/id_ed25519(私钥)和~/.ssh/id_ed25519.pub(公钥)

第二步:上传公钥到服务器

bash

ssh-copy-id user@your-server-ip

或者手动将公钥内容追加到服务器的~/.ssh/authorized_keys文件中

第三步:修改sshd配置,禁用密码登录

编辑/etc/ssh/sshd_config

text

PasswordAuthentication no
PubkeyAuthentication yes

然后重启sshd服务:

bash

sudo systemctl restart sshd

注意:在修改配置前务必确认密钥登录已测试成功,否则可能把自己锁在门外。

03 第二道防线:修改默认端口

将SSH端口从22改为高位端口是成本最低的加固手段。根据金山云和阿里云的文档,修改默认端口可以有效躲避自动化攻击工具针对常用端口的扫描。攻击者通常会扫描22端口,改为高位端口后,90%以上的自动化扫描会被过滤掉。

操作步骤

编辑/etc/ssh/sshd_config,找到#Port 22这一行,在下方新增一行:

text

Port 59222

不要直接修改原来的22端口,建议先新增一个高位端口,测试新端口能正常登录后,再注释掉22端口。这样可以避免配置失误导致完全无法登录

修改后重启sshd服务:

bash

sudo systemctl restart sshd

别忘了防火墙放行新端口

bash

sudo ufw allow 59222/tcp

同时登录云控制台,在安全组中放行该端口。建议将来源IP限制为可信IP段或公司出口IP

04 第三道防线:禁止root远程登录

root是攻击者的首要目标。一旦root密码被攻破,整个服务器沦陷

操作步骤

创建普通用户并配置sudo权限:

bash

sudo useradd -m -s /bin/bash opssudo passwd opssudo usermod -aG sudo ops

/etc/ssh/sshd_config中设置:

text

PermitRootLogin no

只允许普通用户登录,需要root权限时通过sudo -i提权。

还可以进一步限制登录用户和IP,在sshd_config中添加:

text

AllowUsers ops@192.168.1.0/24  # 只允许特定IP段登录

配置hosts.allow/hosts.deny也可以实现IP白名单控制

写在最后

那家被入侵的客户后来按这三步加固了服务器:禁用密码登录、修改SSH端口、禁止root远程登录。三个月后他说:“日志里再也看不到几千条失败登录记录了,安心了。”

SSH安全加固是每台云服务器的必修课。配置一次,终生受益。