SSH 免密登录:第一次配密钥就搞懂的几件事

举报
yd_255726501 发表于 2026/11/10 08:14:52 2026/11/10
【摘要】 每次 SSH 连服务器都要输一遍密码,输错了还得重来,写脚本自动化更是没法弄。免密登录就是解决这个问题的标准做法:配一次,以后连服务器直接进,连输密码的步骤都省了。原理不复杂,跟着做一遍就能懂。一、密钥对是怎么回事免密登录靠的是一对密钥:私钥和公钥。私钥留在你自己的电脑上,千万别发给别人;公钥放到服务器上,相当于一把“锁”。连接时,服务器用公钥出一道只有你的私钥能解的题,解对了就放行,整个过...

每次 SSH 连服务器都要输一遍密码,输错了还得重来,写脚本自动化更是没法弄。免密登录就是解决这个问题的标准做法:配一次,以后连服务器直接进,连输密码的步骤都省了。原理不复杂,跟着做一遍就能懂。

一、密钥对是怎么回事

免密登录靠的是一对密钥:私钥和公钥。私钥留在你自己的电脑上,千万别发给别人;公钥放到服务器上,相当于一把“锁”。连接时,服务器用公钥出一道只有你的私钥能解的题,解对了就放行,整个过程密码一次都不用输。

可以这样理解:公钥是挂在服务器门上的锁,私钥是你口袋里唯一能开这把锁的钥匙。锁可以公开,钥匙必须自己保管好。明白了这个对应关系,后面每一步都知道自己在干什么。

二、三步配好免密登录

第一步,在自己电脑上生成密钥对:输入 ssh-keygen -t ed25519,一路回车就行。生成后,~/.ssh/ 目录下会多出两个文件:id_ed25519 是私钥,id_ed25519.pub 是公钥。如果提示已存在同名文件,先别急着覆盖,看看是不是以前配过的。

第二步,把公钥传到服务器:用 ssh-copy-id 用户名@服务器地址,输入一次密码,工具会自动把公钥追加到服务器的 ~/.ssh/authorized_keys 文件里。没有 ssh-copy-id 的话,也可以手动把 .pub 文件的内容复制过去,效果一样。

第三步,测试:再执行一次 ssh 用户名@服务器地址,这次应该直接登录成功,不再问密码。如果成功了,免密登录就配好了。

三、最常见的三个坑

第一个坑是权限太松。SSH 对权限很敏感:~/.ssh 目录必须是 700,authorized_keys 文件必须是 600,权限太开放会被服务器直接拒绝。配完连不上时,先用 chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys 各修一次,很多问题就这样解决了。

第二个坑是复制公钥时多复制了换行或少复制了字符。authorized_keys 里一行就是一个公钥,断成两行就认不出来。直接用 ssh-copy-id 传最稳妥,手动复制的话要确认整行完整。

第三个坑是服务器的配置没开公钥登录。极少数服务器的 /etc/ssh/sshd_config 里 PubkeyAuthentication 被设成了 no,这时改成 yes 再重启 sshd 服务才行。改这个需要服务器管理员权限,普通用户遇到可以找运维确认。

小结

免密登录就三件事:本机生成密钥对、公钥传到服务器、测试直连。核心是记住“私钥自己留、公钥放服务器”,出问题先查权限、再查公钥内容、最后看服务端配置。配好之后,日常连服务器和写自动化脚本都会顺手很多。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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