Termius SSH 密钥管理最佳实践 | 生成、保护、轮换、硬件密钥
密钥安全的核心原则
SSH 密钥是进入服务器的钥匙。和密码不同,密钥一旦泄露,攻击者可以直接绕过密码认证。所以密钥安全的核心原则很简单:
- 私钥不能泄露——它是打开服务器的钥匙
- 公钥可以公开——它是服务器门上的锁
- 有备份但不滥用——密钥存密码管理器或 Keychain,别散在各个设备上
生成密钥对
算法选择
| 算法 | 推荐 | 说明 |
|---|---|---|
| Ed25519 | ✅ 首选 | 更短、更快、抗侧信道攻击,OpenSSH 7.4+ 支持 |
| RSA 4096 | ⚠️ 备选 | 兼容性最好,但密钥更长(4096 位 vs Ed25519 的 256 位),速度更慢 |
| ECDSA | ❌ 不推荐 | P-256 有侧信道攻击风险,P-384 / P-521 也没优势 |
| DSA | ❌ 淘汰 | 不安全,早就被淘汰了 |
优先用 Ed25519,除非目标服务器不支持(极少数情况)。
Termius 内置生成
左侧导航 → Keys → New Keychain Identity:
- 选 Ed25519
- 输入密钥名称(建议:
姓名-设备-用途,比如zhangsan-work-laptop-prod) - 输入 passphrase(必须设!)
- 点击 Generate → 密钥对生成
命令行生成
# Ed25519
ssh-keygen -t ed25519 -C "zhangsan@termius-work-laptop" -f ~/.ssh/id_ed25519
# RSA 4096(兼容老旧服务器)
ssh-keygen -t rsa -b 4096 -C "zhangsan@termius-work-laptop" -f ~/.ssh/id_rsa
-C 字段是注释,用来识别密钥是谁、在哪台设备生成的。-f 指定密钥文件路径。
生成了什么
~/.ssh/
├── id_ed25519 # 私钥(⚠️ 不能泄露)
└── id_ed25519.pub # 公钥(可以放到服务器上)
设置 passphrase(密钥密码)
强烈建议给每个私钥都设 passphrase。 原因:
- 即使私钥文件被盗(恶意软件、笔记本丢了),没有 passphrase 也用不了
- 密钥的 passphrase 和加密密码是独立的安全层
- 生产环境的密钥 passphrase 长度至少 16 字符
Termius 里 passphrase 处理:
- 导入 / 生成密钥时如果有 passphrase,Termius 会提示输入
- 输入正确后可以选择「记住」(存在 Termius Keychain 里,跟着 Vault 加密)
- 每次使用密钥时从 Keychain 读取,不需要你手动输入
把公钥部署到服务器
方式一:ssh-copy-id(最简单)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.example.com
一条命令搞定:自动连服务器 → 创建 ~/.ssh → 把公钥追加到 authorized_keys → 设置正确权限。
方式二:手动
# 1. 手动把公钥内容追加到服务器的 authorized_keys
cat ~/.ssh/id_ed25519.pub
# 复制输出内容
# 2. SSH 到服务器
ssh user@server.example.com
# 3. 创建目录和文件
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ssh-ed25519 AAAA... zhangsan@termius-work-laptop" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
方式三:Termius 一键部署
Termius Keys 管理界面里,选中一个密钥 → 右键 → Deploy → 指定目标主机,Termius 会自动用 SSH 连接把公钥部署上去。
密钥导入到 Termius
生成密钥对后,需要把私钥导入 Termius:
- 左侧导航 → Keys → Import / Add
- 指定私钥文件路径(比如
~/.ssh/id_ed25519) - 如果有 passphrase,输入验证
- 选择存到哪个 Vault(Personal Vault 或 Team Vault)
导入后:
- 密钥存在 Vault 里(加密存储)
- 跨设备同步(Pro 版)
- 主机配置里的 Identity 可以直接引用这个密钥
密钥轮换
定期轮换密钥(建议每半年或一年)是安全好习惯。Termius 可以帮你管理这个流程:
- 生成新密钥对(名称里加轮换日期,比如
zhangsan-2026-10) - 部署新公钥到所有服务器(可以在 Termius 里批量操作)
- 确认新密钥能正常连接每台服务器
- 编辑主机配置,切换到新密钥
- 服务器上删除旧公钥(
~/.ssh/authorized_keys里找到旧的那行删掉) - 本地删除旧私钥(或保留备份在密码管理器里)
Termius 的优势:密钥跟着 Vault 走,编辑主机配置里的密钥引用后,所有设备同步生效——不需要每台设备手动改。
密钥备份
私钥文件要定期备份:
- 方案一:密码管理器(推荐)——Bitwarden / 1Password / KeePass 都支持附件存储,把私钥文件当附件存进去
- 方案二:加密 U 盘——物理隔离的离线备份
- 方案三:Termius 跨设备同步——本身就是一种备份方式
备份的是带 passphrase 的加密私钥——即使备份泄露了,没有 passphrase 也用不了。
多密钥管理
一个工程师通常会有多组密钥:
| 密钥 | 用途 | 部署范围 |
|---|---|---|
name-prod | 生产环境服务器 | 少量核心服务器 |
name-staging | Staging 环境 | 较多服务器 |
name-github | GitHub Git 操作 | GitHub 仓库 |
name-personal | 个人服务器 | 仅自己的几台 VPS |
在 Termius 里:
- 每个密钥导入时用清晰的名称
- 不同 Vault 存不同密钥(生产密钥只在 Production Vault)
- 主机配置里正确引用对应的密钥
硬件密钥替代传统密钥
如果安全要求更高,直接用 FIDO2 硬件密钥(YubiKey)替代传统 Ed25519 密钥:
- 私钥烧在硬件里——不会被盗,不会被复制
- 需要物理按下才能认证——即使密钥配置泄露也没用
- Termius 原生支持——Keys 管理界面里可以生成 / 导入 FIDO2 密钥
硬件密钥适合生产环境、关键基础设施、合规审计场景。
密钥安全自检清单
| 检查项 | 完成状态 |
|---|---|
| 所有密钥都用 Ed25519 或 RSA 4096 | ✅ |
| 所有私钥都设了 passphrase | ✅ |
| 公钥已部署到所有目标服务器 | ✅ |
| 主机配置正确引用了对应密钥 | ✅ |
| 密钥备份存在密码管理器 | ✅ |
| 旧密钥已从服务器删除 | ✅ |
| 密钥至少半年轮换一次 | ✅ |
继续「密码和加密密码管理」。