教程
SSH 密钥登录入门:生成密钥、配置权限与常见坑
买了海外 VPS 之后,第一件该做的事不是装面板,而是把 SSH 登录换成密钥认证。密码登录最大的问题是:只要端口暴露在公网上,就会被自动脚本持续试探,弱口令账号分分钟被爆破。密钥认证没有"可猜的密码",而且配置一次之后,以后登录连密码都不用输。
AI 操作示意图·以官网实际界面为准
一、生成密钥对
密钥认证用的是"一对"密钥:私钥留在你本机,绝不能外传;公钥可以随便复制到服务器上。
在本地终端运行:
ssh-keygen -t ed25519 -C "[email protected]"
-t ed25519:指定算法,Ed25519 是目前默认推荐的,密钥短、速度快;-C只是加个备注,方便你认出这把钥匙是哪台机器/哪个用途的;- 一路回车接受默认路径
~/.ssh/id_ed25519(Windows 上是C:\Users\你的用户名\.ssh\id_ed25519)。
生成后会有两个文件:
| 文件 | 用途 | 能不能外传 |
|---|---|---|
id_ed25519 |
私钥,登录时证明"是你" | 绝不能,等同密码 |
id_ed25519.pub |
公钥,装到服务器上 | 可以随便复制 |
建议顺手设一个 passphrase(口令短语)。它不是登录密码,而是给私钥文件加一层"保险",即使私钥文件泄露,没有口令也打不开。嫌每次输入麻烦,可以用 ssh-agent / ssh-add 把密钥加载进内存,一次解锁、会话内免输。
二、把公钥装到服务器
最简单的方式是用 ssh-copy-id,它会自动把公钥追加到服务器的授权列表里,而不会覆盖已有密钥:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@你的服务器IP
第一次连接会让你输一次密码(就这一次),之后这个账号就接受你的密钥了。
如果没有 ssh-copy-id(比如 Windows 客户端),手动追加也一样:登录服务器后,把 id_ed25519.pub 的内容追加到 ~/.ssh/authorized_keys,一行一个公钥。
AI 操作示意图·以官网实际界面为准
注意:Windows 上 OpenSSH 的授权文件位置和 Linux 略有不同,管理员账户用的是
C:\ProgramData\ssh\administrators_authorized_keys,且对文件 ACL 有严格要求,配置前先看微软官方文档。
三、目录与文件权限
密钥认证失败最普遍的原因不是密钥错了,而是权限太松。OpenSSH 有 StrictModes 检查,私钥文件权限过宽会直接被拒绝使用。
| 路径 | 权限 |
|---|---|
~/.ssh/ 目录 |
700 |
私钥(id_ed25519 等) |
600 |
公钥(.pub) |
644 |
~/.ssh/authorized_keys |
600 |
服务器端还有一条容易忽略的:家目录本身不能被组或其他用户可写,否则 OpenSSH 认为整条路径不安全,也会拒绝登录。看到 Permissions 0644 for '...id_ed25519' are too open 这类报错,就用 chmod 把权限收紧再看。
四、验证登录,再关密码登录
先用密钥正常登录一次,确认一切 OK,再考虑关掉密码登录:
ssh user@你的服务器IP
能直接进、不用输密码,说明密钥认证已生效。
之后编辑服务器上的 /etc/ssh/sshd_config,把 PasswordAuthentication yes 改成 no,重启服务生效:
sudo systemctl restart sshd
强烈建议顺序别反:先在另一个终端保持一个已登录会话(或确认控制台可用)再重启服务,避免密码登录关闭后、密钥又连不上,把自己锁在外面。改配置前先 sshd -t 检查语法。

常见问题
问:私钥泄露了怎么办?
答:立即在服务器上把 authorized_keys 里对应公钥删掉,同时重新生成一对新密钥替换所有服务器上的旧公钥,并考虑该服务器所有账号改密。泄露的私钥要当密码泄露处理,别只删不换。
问:换电脑了,密钥登录失败?
答:新电脑要重新生成或复制密钥对,把公钥再加到服务器 authorized_keys;同时检查新机器上 ~/.ssh 的权限是否为 700/600,权限太松会被 OpenSSH 直接忽略。
问:能用同一把密钥登录多台服务器吗?
答:可以,把同一份公钥加到多台服务器的 authorized_keys 就行。但从安全习惯上,建议按用途/按机器分开生成密钥,一台泄露不至于全盘失守。
问:一定要关闭密码登录吗? 答:至少应该把弱密码换掉,并考虑加装 fail2ban 之类的防护。关闭密码登录是最彻底的做法,但前提是密钥配置验证通过、并有备用登录途径,避免把自己锁在门外。
小结
SSH 密钥认证的完整链路就四步:生成密钥对 → 把公钥装到服务器 → 收紧权限 → 验证后关闭密码登录。习惯之后每次连接都很顺,而服务器被爆破的风险会小很多。配置过程中遇到报错,先看权限,再看是不是改错了 sshd_config,这两类问题占了绝大多数。
官方资料
资料核对日期:2026-10-24
- OpenSSH 官方手册(ssh-keygen / sshd_config 等命令文档):https://www.openssh.com/manual.html
- Microsoft Learn:在 OpenSSH for Windows 中基于密钥的身份验证:https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_keymanagement
- Linuxize:~/.ssh 目录、文件与权限速查:https://linuxize.com/post/ssh-folder-files-and-permissions/
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















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