为出海而探索,为选择多想一步。CROSSBORDER GEEK / K8N.COM
K8N跨境极客CrossBorder Geek

教程

SSH 密钥登录入门:生成密钥、配置权限与常见坑

买了海外 之后,第一件该做的事不是装面板,而是把 SSH 登录换成密钥认证。密码登录最大的问题是:只要端口暴露在公网上,就会被自动脚本持续试探,弱口令账号分分钟被爆破。密钥认证没有"可猜的密码",而且配置一次之后,以后登录连密码都不用输。

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

最近一周热门文章

按近 7 天访问热度排序,热度积累前优先展示新文章。

当前栏目最新文章

教程 · 继续阅读同栏目的新内容

一起交流

0 条留言

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

LEAVE A NOTE

你的经验,也很重要。

无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。

更多阅读
K8N · CrossBorder Geek

给出海玩家、独立开发者、跨境博主与外贸人的选型笔记。

关于这个博客 ↗