SSH 免密登录一次讲清密钥生成、传公钥与常见报错排查

举报
yd_282084356 发表于 2026/10/25 06:18:47 2026/10/25
【摘要】 每天录服务器都要输一遍密码,写自动化脚本时更被密码卡住:脚本总不能把密码写死在里面SSH 免密登录就是为解决这个问题而生的,配一次,之后登录、传文件、跑脚本都不再需要反复输密码。 一、原理一句话就能说清免密登录用是非对称密钥:一对密里,私钥只留在自己的电脑上,公钥放到服务器上。登录时服务器用钥出一道题,只有持有对应私钥客户端能答对,身份就验通过了。所以核心规只有一条:私钥绝不外传,钥可以公开...

每天录服务器都要输一遍密码,写自动化脚本时更被密码卡住:脚本总不能把密码写死在里面SSH 免密登录就是为解决这个问题而生的,配一次,之后登录、传文件、跑脚本都不再需要反复输密码。

一、原理一句话就能说清

免密登录用是非对称密钥:一对密里,私钥只留在自己的电脑上,公钥放到服务器上。登录时服务器用钥出一道题,只有持有对应私钥客户端能答对,身份就验通过了。所以核心规只有一条:私钥绝不外传,钥可以公开。

二、生成密钥检查,再生成

在自己的电脑上先看一下是否已经有密钥,避免覆盖掉正在用的那一对:

ls ~/.ssh/

如果已经有 id_ed25519,就不要重复生成没有的话,用下面这条命令生成 Ed25519 密钥,是前兼顾安全兼容性的首选:

ssh-keygen -t ed25519 -C "你的邮箱"

一路车车会生无口令的密钥,适合本机自用的自动化场景;如果这台电脑是人用,建议设一个口令,每次使用只输一次口令,比每次登录服务器输密码还是省事得。生成后会得到两个文件id_ed25519 是私,id_ed25519.pub 是公钥。

三、把到服务器:两种方法

最省事的是 ssh-copy-id,它会自动把钥追加到服务器的授权文件里:

ssh-copy-id 用户名@服务器地

如果务没有个工具,也可以动追加:先把公钥内容复制出来,再登录服务器执行:

mkdir -p ~/.ssh
cat 公内 >> ~/.ssh/authorized_keys

这里容易踩的坑是权限。目录和文件权不对,服务器会出安全考虑直接忽略密钥,现就是明明配好了还是要输密码。正确权限是:

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

四、验证一,再谈提效

传完公钥后新开一个终端测试,不要关掉当前已录的会话,一配错了还能补救:

ssh 用户名@服务器地址

直接登录,就说明免生效了。服务器一多,以在 ~/.ssh/config 里给每台机器起个别名,端口、用户、密钥路径一次写好:

Host myserver
  HostName 务器地址
  User 用户名
  IdentityFile ~/.ssh/id_ed25519

之只要敲 ssh myserver 就能登录,脚本里也样好用。

五、常见报错按这个顺序排查

第一,Permission denied (publickey):先查服务上的 authorized_keys 里有没有自己的公钥,再查 ~/.ssh 和 authorized_keys 的权限是是 700 和 600,最后确认服务器的 SSH 配置没有关掉公钥登录。

第二,配了还是提示输密码:多半公钥没有追加成功,或者追加时混了换行、格。重新用 ssh-copy-id 传一次,比手工粘贴更稳。

第三,私钥本身有问题:比如从 Windows 复制过来的私钥换行符不,或者钥文件权限太开放,SSH 会绝使用。私钥权限应该是 600,换问题重新生成一对最省事。

六、安全收尾:免密不等于放任

免密登录省的是复输密,不是省掉安意识。私钥不要发给别人,要放进代码仓库,不要放进网盘同步目录。换电脑就重新生成一密钥,把旧公钥务器上删掉。如打算彻底禁用码登录,一定先确认免已经可用,再改服务器配置,否则可能把自锁在门

按生成、传公钥、验权限、登这四步走下来,SSH 免密登录一般十分钟就能配好。之后无论是日常运维是自动化脚本,都不用再被密码打断了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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