SSH 密钥登录配置:从生成密钥到禁用密码登录

举报
yd_233292016 发表于 2026/11/07 15:06:31 2026/11/07
【摘要】 密码登录看起来方便,却是服务器最常被攻击的入口:弱口令会被暴力破解,口令一旦泄露,攻击者就能直接登录。SSH 密钥登录用一对非对称密钥代替口令,私钥留在自己手里,公钥放在服务器上,登录时双方做一次密码学验证,既不用每次输口令,也大幅提高了破解成本。本文从生成密钥讲起,到禁用密码登录,给出一套可以在生产服务器上直接落地的配置流程。 一、密钥登录的原理SSH 密钥是一对文件:私钥(id_ed25...

密码登录看起来方便,却是服务器最常被攻击的入口:弱口令会被暴力破解,口令一旦泄露,攻击者就能直接登录。SSH 密钥登录用一对非对称密钥代替口令,私钥留在自己手里,公钥放在服务器上,登录时双方做一次密码学验证,既不用每次输口令,也大幅提高了破解成本。本文从生成密钥讲起,到禁用密码登录,给出一套可以在生产服务器上直接落地的配置流程。

一、密钥登录的原理

SSH 密钥是一对文件:私钥(id_ed25519)和公钥(id_ed25519.pub)。公钥可以公开,相当于一把锁;私钥必须保密,相当于钥匙。登录时,服务器用保存在 authorized_keys 里的公钥加密一段随机数,客户端用私钥解密并返回结果,服务器验证通过后放行。整个过程口令不经过网络,暴力破解口令的攻击也就失去了目标。即使公钥泄露,攻击者没有私钥,仍然无法登录。

二、生成密钥

在本地电脑(不是服务器)执行:

ssh-keygen -t ed25519 -C "your_email@example.com"

按提示选择保存位置,默认是 ~/.ssh/id_ed25519。建议给私钥设置一个口令(passphrase),这样即使私钥文件被盗,没有口令也无法使用。Ed25519 是目前推荐的算法,密钥短、速度快、安全性好;如果旧系统不支持,可改用 ssh-keygen -t rsa -b 4096。生成后不要把私钥发给任何人,也不要把它上传到代码仓库、网盘或聊天记录里。

三、把公钥部署到服务器

最简单的方法是 ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@服务器IP

它会把公钥追加到服务器 ~/.ssh/authorized_keys。也可以手动复制公钥内容(注意是一整行,不要断行),粘贴到服务器的该文件末尾。权限必须正确,否则 SSH 会拒绝密钥登录:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

四、测试密钥登录

先不要断开当前会话,另外开一个终端测试:

ssh -i ~/.ssh/id_ed25519 user@服务器IP

如果能直接登录(或只提示输入私钥口令),说明配置成功。如果仍要求输入服务器口令,可用 ssh -v 查看调试信息,常见原因是 .ssh 目录或 authorized_keys 权限不对、公钥复制时断行,或者服务器 sshd 配置里没有开启 PubkeyAuthentication。

五、禁用密码登录

确认密钥登录可用后,再关闭密码登录。编辑服务器上的 /etc/ssh/sshd_config,确认以下几项:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin prohibit-password

然后重启 SSH 服务使配置生效:

sudo systemctl restart sshd

注意:一定要在当前会话不断开的前提下,再开新会话验证密钥登录。万一配置写错导致无法登录,旧会话还能用来修复;如果直接断开,就只能通过云厂商的控制台救援了。

六、多台服务器的管理技巧

密钥多了以后,可以在本地 ~/.ssh/config 里给每台服务器起别名:

Host myserver
    HostName 203.0.113.10
    User deploy
    IdentityFile ~/.ssh/id_ed25519
    Port 22

之后直接 ssh myserver 即可。不同用途用不同密钥,例如工作、个人项目、跳板机各一对,出问题时只需吊销其中一把,不影响其他服务器。

七、日常安全习惯

第一,私钥只存本地,定期备份到加密 U 盘或密码管理器,不要明文备份到云端。第二,离职或设备丢失时,立即从所有服务器的 authorized_keys 里删除对应公钥。第三,定期轮换密钥,至少每年换一次。第四,重要服务器配合防火墙只放行受信任的 IP,或通过跳板机统一接入。密钥登录不是终点,而是把口令这个最弱环节去掉后,再叠加最小权限和网络隔离,安全才真正成体系。

结语

从生成密钥、部署公钥、测试登录,到禁用密码登录,整个流程不过十几分钟,却能把服务器最常见的入侵方式挡在门外。记住顺序:先让密钥登录跑通,再关密码登录;改配置前保留一个已登录的会话。把这套流程用在每一台新服务器上,口令爆破将不再是你的威胁。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。