服务器遭受内网SSH暴力破解
【保姆级教程】Ubuntu 服务器安全加固:配置 SSH 密钥登录并禁止密码爆破
背景
最近查看服务器日志(/var/log/auth.log),发现大量 Invalid user 和 Failed password 的记录。这说明服务器正在遭受 SSH 暴力破解攻击。

为了彻底解决这个问题,最稳妥的方案是:启用 SSH 密钥登录,并完全禁用密码登录。这样攻击者就算试一万年密码也没用,因为服务器根本不接受密码验证。
核心原理
- 公钥 (Public Key):相当于“锁头”,放在服务器上 (~/.ssh/authorized_keys)。
- 私钥 (Private Key):相当于“钥匙”,必须严格保存在你的客户端电脑里(Windows/Mac),绝对不能泄露。
第一步:在客户端生成密钥
无论你是 Windows 还是 Mac,步骤基本一致。
-
如果提示设置 passphrase(密钥密码),为了实现免密登录,建议直接留空回车。
结果:你的密钥会生成在用户目录的 .ssh 文件夹下: -
id_rsa:私钥(机密!千万别发给别人,也别上传到服务器)
-
id_rsa.pub:公钥(这个是我们要用到服务器上的)
第二步:将公钥上传到服务器
方法 A:Windows 用户(手动添加)
Windows 默认没有上传工具,建议手动操作,确保不出错。
# 1. 创建目录(如果不存在)
mkdir -p ~/.ssh
# 2. 编辑认证文件
nano ~/.ssh/authorized_keys
方法 B:Mac / Linux 用户(命令一键上传)
在 Mac 终端里直接运行:
ssh-copy-id 用户名@服务器IP
输入一次服务器密码,公钥就自动部署好了。
第三步:测试密钥登录
⚠️ 高能预警:在这一步测试成功前,千万不要关闭你当前的 SSH 窗口!
- 如果直接进入系统,或者不再提示输入 password,说明配置成功!🎉
- 如果依然提示输入密码,请检查第二步的权限设置。
第四步:彻底禁止密码登录(关门打狗)
确认密钥可以用之后,就可以把密码登录这个“漏洞百出”的大门焊死了。
sudo nano /etc/ssh/sshd_config
1.找到(或添加)以下配置项,并修改为:
# 禁用密码验证 (最关键的一步)
PasswordAuthentication no
# 启用公钥验证 (默认通常是 yes,确认一下)
PubkeyAuthentication yes
# 禁用质询响应 (可选,建议关闭)
ChallengeResponseAuthentication no
Ubuntu 特别注意:如果你在文件中看到 Include /etc/ssh/sshd_config.d/*.conf 这一行,请确保该目录下的文件没有覆盖你的设置。通常直接改主文件这就够了,但如果重启后不生效,可能需要检查那个目录。
2.保存并退出 (Ctrl+O, Enter, Ctrl+X)。
#重启 SSH 服务让配置生效:
sudo systemctl restart ssh
进阶技巧:多设备管理与别名配置
1. 如何添加新设备(如 iPad 或 另一台电脑)?
既然密码登录关了,新设备怎么连?
- 逻辑:用已经有权限的老设备,帮新设备“开门”。
- 操作:
- 在新设备生成密钥 (ssh-keygen)。
- 把新设备的公钥 (id_rsa.pub) 发送给老设备。
- 在老设备上,把这行公钥追加粘贴到服务器的 ~/.ssh/authorized_keys 文件中(另起一行)。
- 此时新设备也拥有了访问权限。
2. 配置 SSH Alias(偷懒神器)
不想每次都输 IP 地址?配置一下客户端的 SSH Config。
在客户端(Windows/Mac)的 ~/.ssh/config 文件中写入:
Host mylab # 你起的别名
HostName 10.109.xx.xx # 服务器 IP
User bupt_student # 用户名
IdentityFile ~/.ssh/id_rsa
以后只需要输入 ssh mylab 即可秒连服务器,VSCode 的 Remote SSH 也会自动识别这个别名。
附:紧急补救措施
万一配置失误,所有设备都连不上了怎么办?
网硕互联帮助中心





评论前必须登录!
注册