教程
SSH 密钥登录配置指南:从生成到免密
为什么用密钥登录
AI 示意图·以 OpenSSH 官方手册为准
SSH 支持多种认证方式,密钥登录比纯密码登录更常用的原因是:密钥由「私钥 + 公钥」成对组成,私钥只保存在你自己的机器上,公钥放在服务器,登录时服务器用公钥验证持有私钥的你。即使服务器被扫描、密码被撞库,没有私钥也无法登录。
OpenSSH 的 ssh-keygen(1) 手册明确说明:不带参数运行时,ssh-keygen 默认生成 Ed25519 密钥;私钥默认写入 ~/.ssh/id_ed25519,公钥写入 ~/.ssh/id_ed25519.pub。密钥类型也可用 -t 指定(支持 ed25519、rsa、ecdsa 等,以官方手册为准)。
提示:本文所有命令以 OpenSSH 官方手册为准;具体发行版默认配置请以你的系统文档为准。
第一步:生成密钥对
在本地电脑(而不是服务器)执行:
ssh-keygen -t ed25519 -C "你的备注"
-t ed25519:指定密钥类型(默认也是 Ed25519);-C:给公钥加注释,便于识别这把钥匙;- 一路回车可使用默认路径
~/.ssh/id_ed25519;也可以为私钥设置口令(passphrase)二次保护。
生成后你会得到两个文件:
| 文件 | 作用 |
|---|---|
~/.ssh/id_ed25519 |
私钥,绝不能外传 |
~/.ssh/id_ed25519.pub |
公钥,可以放到任何要登录的服务器 |
ssh-keygen 手册强调:私钥文件只有你自己能读;口令丢失无法找回,只能重新生成并重新分发公钥。所以私钥要备份好、权限要收紧。
第二步:把公钥放到服务器
把公钥内容追加到服务器上该用户目录的 ~/.ssh/authorized_keys。常见做法:
ssh-copy-id 用户@服务器地址
也可以手动把 id_ed25519.pub 的内容追加到服务器 ~/.ssh/authorized_keys。注意目录与文件的权限(通常 ~/.ssh 为 700、authorized_keys 为 600),具体以发行版与 OpenSSH 文档为准。
第三步:用密钥登录并配置服务端
AI 示意图·以 OpenSSH 官方手册为准
ssh 用户@服务器地址
如果服务器接受密钥且你持有私钥,即可登录。登录后可在服务器 sshd_config 中按需启用/关闭相关认证选项(如 PubkeyAuthentication、PasswordAuthentication、PermitRootLogin),修改前先备份配置文件,确认密钥能登录后再收紧,避免把自己锁在门外。
免密与日常使用
日常频繁登录时,可用 ssh-agent 缓存私钥:
ssh-add ~/.ssh/id_ed25519
添加后本会话内免输口令。GitHub 官方 SSH 文档给出的流程也是「检查现有密钥 → 生成新密钥并加入 ssh-agent → 把公钥添加到账号 → 测试连接」,按官方步骤走即可。
常见问题

1. 私钥口令忘了怎么办?
ssh-keygen 手册明确:没有恢复机制,只能重新生成密钥并重新分发公钥。
2. 多台服务器用同一把钥匙吗?
可以复用,也可以按服务器/用途分开生成;注意公钥要分别部署到每台服务器的 authorized_keys。
3. 登录时提示权限不对?
检查本地私钥与服务器 authorized_keys 的权限是否过宽,具体要求以你的发行版与 OpenSSH 文档为准。
4. 改了 sshd 配置后连不上怎么办? 修改配置前先备份,修改后逐步验证;如有意外,用现有会话或带外通道(如控制台)恢复。
官方资料
资料核对日期:2026-10-27
- OpenSSH 官方手册(ssh-keygen 等命令):https://www.openssh.com/manual.html
- Linux manual pages(ssh-keygen(1)):https://man7.org/linux/man-pages/man1/ssh-keygen.1.html
- GitHub 官方 SSH 连接文档(中文):https://docs.github.com/zh/authentication/connecting-to-github-with-ssh
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















还没有留言,来分享你的想法吧。