SSH 密钥登录入门:告别密码,用一对密钥安全登录服务器

举报
yd_274862470 发表于 2026/10/27 08:46:00 2026/10/27
【摘要】 用一对 SSH 密钥代替密码登录服务器:本文介绍公钥与私钥的工作原理、生成密钥对、把公钥放到服务器、权限设置与常见问题排查,以及更安全的日常习惯。

每次登录服务器都要输入又长又难记的密码,还担心密码被猜中或在传输中被截获?SSH 密钥登录就是为了解决这个问题而生的办法:你手里拿一把私钥,服务器上只放一把对应的公钥,两者配对成功才能登录,密码不再是唯一的防线。


一、密钥登录是怎么工作的

可以把公钥理解为一把可以公开的锁,私钥是唯一能开这把锁的钥匙。生成密钥对时,系统会同时产出这两个文件。公钥可以放心放到服务器上,即使别人看到了也无法反推出私钥;私钥则必须只留在自己的电脑里,绝不能发给别人、上传到公开仓库或贴到聊天记录里。登录时,服务器用公钥出一道只有私钥能解的题,本地用私钥解开并证明身份,整个过程不需要把密码发到服务器上。


二、在本地生成密钥对

在自己的电脑上打开终端,执行 ssh-keygen -t ed25519 -C "你的邮箱或备注",按提示选择保存位置,默认是 ~/.ssh/id_ed25519。建议顺手设置一个密钥口令,它相当于给私钥再加一把锁:即使电脑丢了,别人拿到私钥文件也还需要口令才能使用。生成后你会看到两个文件:id_ed25519 是私钥,id_ed25519.pub 是公钥。


三、把公钥放到服务器上

最省事的办法是 ssh-copy-id 用户名@服务器地址,它会把公钥追加到服务器的 ~/.ssh/authorized_keys 里。如果这条命令不可用,也可以手动复制公钥内容,粘贴到服务器上同一个文件的末尾。权限很关键:.ssh 目录应为 700,authorized_keys 应为 600,权限太开放时服务器会出于安全原因拒绝密钥登录。完成后执行 ssh 用户名@服务器地址,如果不再要求输入服务器密码,而是直接进入命令行,就说明密钥登录已经生效。


四、常见问题怎么排查

第一,仍然提示输入密码。先检查公钥是否完整复制,有没有多余换行或截断;再检查目录和文件权限;最后用 ssh -v 用户名@服务器地址看详细日志,日志会提示是哪一步被拒绝。第二,换了一台电脑。密钥默认不跟随账号走,需要在新电脑上重新生成一对密钥,或者把原私钥安全地迁移过去,并把新公钥也加到服务器上。第三,私钥丢了。不要慌,立即删除服务器上对应的公钥,再生成一对新密钥,这样旧私钥即使落到别人手里也无法再登录。


五、更进一步的安全习惯

密钥登录生效并确认无误后,才可以考虑关闭服务器的密码登录,并只保留密钥登录,这样暴力猜密码的攻击就基本失效了。平时要把私钥备份到加密的离线介质里,不要只存在一台电脑上;给不同用途的服务器使用不同的密钥对,出问题时影响范围更小;定期检查 authorized_keys 里有没有不再使用的旧公钥,及时清理。


小结:生成密钥对、把公钥放到服务器、确认能免密登录、再收紧密码登录,就是一套完整又实用的入门流程。花十分钟配置一次,之后每次登录既更快,也更安全。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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