SSH 免密登录:从 ssh-keygen 到 authorized_keys

举报
yd_283162409 发表于 2026/11/04 08:55:38 2026/11/04
【摘要】 每天要登录好几台服务器,每次都输密码既麻烦又容易在脚本里留下密码。SSH 免密登录就是解决这个问题的标准做法:本机生成一对密钥,把公钥放到服务器上,之后登录时服务器用公钥验证你的私钥,验证通过直接放行,不用再输密码。第一步是在本机生成密钥:ssh-keygen -t ed25519,一路回车会生成默认路径的密钥对。ed25519 是目前推荐的算法,密钥短、速度快;如果老系统不支持,再考虑 r...

每天要登录好几台服务器,每次都输密码既麻烦又容易在脚本里留下密码。SSH 免密登录就是解决这个问题的标准做法:本机生成一对密钥,把公钥放到服务器上,之后登录时服务器用公钥验证你的私钥,验证通过直接放行,不用再输密码。

第一步是在本机生成密钥:ssh-keygen -t ed25519,一路回车会生成默认路径的密钥对。ed25519 是目前推荐的算法,密钥短、速度快;如果老系统不支持,再考虑 rsa 4096 位。生成时会问要不要给私钥设口令,设了口令每次使用还要输一次,适合单人使用的机器可以留空,但私钥文件本身一定要保管好,绝不能发给别人或贴到公开地方。

第二步是把公钥传到服务器:最省事的是 ssh-copy-id 用户名@服务器地址,它会自动把本机公钥追加到服务器的 ~/.ssh/authorized_keys 里。没有 ssh-copy-id 时也可以手动复制:把 id_ed25519.pub 的内容粘贴到服务器上同一个文件的末尾,注意是一行一个公钥,不要换行拆开。

第三步是排障。免密没生效时先查三处权限:~/.ssh 目录必须是 700,authorized_keys 必须是 600,家目录不能被其他用户写,否则 sshd 会出于安全考虑直接忽略密钥。其次看服务器 sshd_config 里 PubkeyAuthentication 是不是 yes。最后用 ssh -v 看调试输出,看到 offering public key 后被拒绝,基本就是上面权限或文件内容的问题。

用熟之后还能进阶:~/.ssh/config 里给每台机器起别名、指定用户和密钥文件,ssh 名字就能直连;多台机器之间跳板时用 ProxyJump,不用把私钥到处拷贝。记住一条底线:私钥只留在自己的设备上,永远不经聊天、邮件、网盘传给第二个人。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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