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

教程

SSH 密钥登录配置指南:从生成到免密

为什么用密钥登录

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

最近一周热门文章

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

当前栏目最新文章

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

一起交流

0 条留言

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

LEAVE A NOTE

你的经验,也很重要。

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

更多阅读
K8N · CrossBorder Geek

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

关于这个博客 ↗