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 服务才行。改这个需要服务器管理员权限,普通用户遇到可以找运维确认。
小结
免密登录就三件事:本机生成密钥对、公钥传到服务器、测试直连。核心是记住“私钥自己留、公钥放服务器”,出问题先查权限、再查公钥内容、最后看服务端配置。配好之后,日常连服务器和写自动化脚本都会顺手很多。
- 点赞
- 收藏
- 关注作者
评论(0)