SSH 密钥:从生成、免密登录到安全轮换

举报
yd_225891185 发表于 2026/11/11 18:27:49 2026/11/11
【摘要】 每次 SSH 登录都要输密码,麻烦还是其次,更大的问题是弱密码会被全网扫描爆破。改成密钥登录后,服务器只认你手里的私钥,密码爆破就无从下手。下面是个人服务器上最常用的一套做法。 一、生成密钥对本地执行一条命令即可:ssh-keygen -t ed25519 -C "my-laptop-2026"ed25519 是目前推荐的算法,密钥短、速度快、安全性足够,没必要再用 RSA 2048。-C ...

每次 SSH 登录都要输密码,麻烦还是其次,更大的问题是弱密码会被全网扫描爆破。改成密钥登录后,服务器只认你手里的私钥,密码爆破就无从下手。下面是个人服务器上最常用的一套做法。

一、生成密钥对

本地执行一条命令即可:

ssh-keygen -t ed25519 -C "my-laptop-2026"

ed25519 是目前推荐的算法,密钥短、速度快、安全性足够,没必要再用 RSA 2048。-C 后面的注释只是备注,写设备名方便以后分辨。命令会生成两个文件:~/.ssh/id_ed25519(私钥,绝不外传)和 ~/.ssh/id_ed25519.pub(公钥,可以公开)。生成时设一个 passphrase,相当于给私钥再加一把锁——即使私钥文件泄露,没有这句口令也用不了。

二、把公钥发到服务器

最省事的是 ssh-copy-id:

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

它会自动把公钥追加到服务器的 ~/.ssh/authorized_keys 里,并顺手把目录权限修好。没有这个工具时也可以手动复制,但要注意两处权限:.ssh 目录必须是 700,authorized_keys 必须是 600,权限太松会被 sshd 直接忽略,表现为"密钥明明放了却还是要密码"。

三、用 config 文件告别记 IP

主机一多,靠命令行记 IP 和端口很快会乱。在本地 ~/.ssh/config 里写别名:

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

以后 ssh myserver 就能直连。不同主机用不同密钥时各写各的 IdentityFile,再加一行 IdentitiesOnly yes,避免客户端把所有密钥挨个试一遍,既慢还可能触发服务器的失败次数限制。

四、关掉密码登录之前,先留一条后路

确认密钥能免密登录后,再去服务器上关密码登录。改 /etc/ssh/sshd_config,把 PasswordAuthentication 设为 no,然后 systemctl reload sshd。关键的一步是:改之前先保持一个已经连上的 SSH 会话不要断,改完再新开一个会话验证,确认没问题才退出旧会话。否则一旦配置写错,自己也会被锁在门外,只能走服务商的控制台救援。

五、密钥也要定期轮换

密钥不是一劳永逸的。建议每年换一次,或者换电脑、怀疑泄露时立刻换。流程很简单:本地生成一对新密钥,把新公钥追加到服务器的 authorized_keys,确认新密钥能登录后,再把旧公钥那一行删掉。删旧密钥之前务必先验证新密钥——顺序反了,同样是把自己锁在门外。

私钥文件要像密码一样保管:不要发到聊天记录、不要塞进公开仓库、不要和别人共用一把。实在需要在多台设备登录,就每台设备各生成一对,服务器上只多加一行公钥,某台设备丢了就只删它那一行,影响范围最小。

密钥登录看着步骤多,实际做一次只要十分钟。换来的是一台不再怕密码爆破的服务器,和再也不用每次敲密码的日常,这笔买卖很值。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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