SSH密钥登录禁用密码防暴力破解:SSH密钥登录配置指南

很多新手站长买了云服务器后,默认使用密码登录 SSH,每天被无数扫描工具暴力破解,迟早会出事。
换成 SSH 密钥登录并彻底关掉密码认证,是目前最主流的防暴力破解手段。
本文从零开始,带你完成这一配置,每一步都附上命令和解释,跟着做就行。

本地生成密钥对

首先在你的本地电脑(不是服务器)上生成一对加密钥匙:私钥自己保留,公钥放到服务器上。

打开本地终端(Linux/Mac 直接开终端,Windows 推荐用 Git Bash 或 PowerShell),输入:

ssh-keygen -t ed25519 -C "你的邮箱或备注"

-t ed25519 指定加密算法,比传统 RSA 更安全且速度快。
按提示选择存放路径(默认 ~/.ssh/id_ed25519)和设置私钥密码(可以直接回车跳过,但建议设一个方便记忆的)。
执行完成后,本地 ~/.ssh/ 目录下会出现两个文件:

  • id_ed25519 —— 你的私钥,必须保管好,不要外传
  • id_ed25519.pub —— 公钥,可以公开,待会要上传到服务器

将公钥上传到服务器

现在把公钥内容复制到服务器上。
最简单的方法是使用 ssh-copy-id 命令:

ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服务器IP

输入一次当前密码后,工具会自动把公钥追加到服务器 ~/.ssh/authorized_keys 文件里。
如果你服务器默认禁止 root 登录,请先用普通用户执行,再手动切换。

如果 ssh-copy-id 不可用,手动操作也行:登录服务器后执行以下命令:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

注意公钥内容必须是一整行,从 ssh-ed25519 开始到末尾,不能换行。

测试密钥登录是否生效

在本地终端尝试用密钥登录:

ssh -i ~/.ssh/id_ed25519 root@你的服务器IP

如果一切正常,你会直接进入服务器,不再需要输入密码。
如果弹窗让你输入私钥保护密码,那是正常的,只要输入你生成时设置的密码即可。

禁用密码登录,仅保留密钥认证

确认密钥可以正常登录后,再关闭密码认证。
这一步是防暴力破解的关键,操作前务必确认密钥登录没问题,否则你会把自己锁在外面。

登录服务器,编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

找到以下几行,修改或添加成下面的值:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
PubkeyAuthentication yes

如果你使用的是云服务商的默认镜像,
可能 PasswordAuthentication 已被设为 yes
直接改成 noChallengeResponseAuthenticationUsePAM 也建议禁用,
因为某些场景下它们会绕过密钥认证。

保存后重启 SSH 服务:

sudo systemctl restart sshd

避坑指南与常见问题

1. 重启 SSH 后登录失败怎么办?
立即用云服务商提供的 VNC 控制台或 IPMI 进入服务器,把刚才修改的配置恢复,重启 sshd。如果实在进不去,很多云服务商支持重置 SSH 配置的救援模式。

2. 私钥权限必须正确。
本地私钥文件权限不能太宽松,否则 SSH 会拒绝使用。修正方法:

chmod 600 ~/.ssh/id_ed25519

3. 对多个服务器用同一个密钥还是不同密钥?
建议每个服务器独立生成密钥,或至少为不同安全级别的服务器分开管理。

4. 忘记私钥保护密码怎么办?
只能重新生成一对密钥,重新上传公钥。没有找回途径。

验证配置是否生效

打开一个新的终端窗口,尝试用密码登录服务器:

ssh root@你的服务器IP -o PreferredAuthentications=password

如果提示 Permission denied (publickey) 而不是提示密码输入,说明密码认证已被成功禁用。

另外,也可以查看 SSH 日志确认安全状态:

sudo journalctl -u sshd | grep -i "Failed password"

如果没有任何输出,说明暴力破解已经无法通过密码攻击你的服务器了。

常见问题与解答

Q:我按步骤做了,但服务器仍要求输入密码?
A:检查公钥是否完整写入了 authorized_keys,且文件权限是 600,父目录 .ssh 是 700。也可能某些云平台默认安装了 fail2ban 或 pam_tally2 等工具,但密码认证本身没关闭,需确认配置。

Q:禁用密码后,还能用密码登录吗?
A:配置中已关闭所有密码相关选项,除非配置有误,否则不会再接受密码登录。若需要临时恢复密码登录(比如重置密钥),可登录 VNC 控制台再改回来。

Q:我用的不是 ed25519 算法,可以用 RSA 吗?
A:可以,但推荐至少 4096 位长度。命令改为 ssh-keygen -t rsa -b 4096,其他步骤完全相同。

完成以上配置后,你的服务器 SSH 安全等级会大幅提升。
建议定期备份私钥,并开启日志监控以便及时发现异常登录行为。

分享到:
上一篇
磁盘分区无损扩容住宅服务器硬盘:住宅服务器硬盘分区无损扩容实
下一篇
跨域API接口Nginx完整修复配置教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意