SSH 密钥认证比密码认证更安全、更方便。但面对多种密钥类型,应该如何选择?本文聚焦这个问题。
常见密钥类型对比#
| 类型 |
密钥长度 |
安全性 |
性能 |
兼容性 |
| ed25519 |
256位 |
极高 |
最快 |
OpenSSH 6.5+ |
| rsa |
4096位 |
高 |
较慢 |
广泛兼容 |
| ecdsa |
521位 |
高 |
快 |
较好 |
推荐:优先选择 Ed25519#
Ed25519 是目前最推荐的 SSH 密钥类型:
- 安全性高:基于椭圆曲线,256位密钥相当于 RSA 3072位
- 性能优秀:签名和验证速度都很快
- 密钥简短:私钥仅 411 字节,公钥仅 98 字节
生成 Ed25519 密钥#
1
|
ssh-keygen -t ed25519 -C "your_email@example.com"
|
输出示例:
1
2
3
4
5
|
Generating public/private ed25519 key pair.
Your identification has been saved in test_key_ed25519
Your public key has been saved in test_key_ed25519.pub
The key fingerprint is:
SHA256:YoI5R0OxDJMGH/CyTuWW5qWTY4qR/ffQAIAV8/MwdHk your_email@example.com
|
查看密钥指纹#
1
|
ssh-keygen -lf ~/.ssh/id_ed25519
|
输出:
1
|
256 SHA256:YoI5R0OxDJMGH/CyTuWW5qWTY4qR/ffQAIAV8/MwdHk your_email@example.com (ED25519)
|
兼容场景:RSA 密钥#
某些老旧系统不支持 Ed25519,此时使用 RSA:
1
|
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
RSA 与 Ed25519 对比#
1
2
3
4
5
|
# 密钥文件大小对比
411 id_ed25519 # Ed25519 私钥
98 id_ed25519.pub # Ed25519 公钥
3.4K id_rsa # RSA-4096 私钥
742 id_rsa.pub # RSA-4096 公钥
|
RSA 密钥大 8 倍,但兼容性最好。
密钥格式转换#
OpenSSH 新版本默认使用新格式,但某些工具需要 PEM 格式。
转换为 PEM 格式#
1
|
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
|
转换后私钥开头:
1
|
-----BEGIN RSA PRIVATE KEY-----
|
从 PEM 转回 OpenSSH 格式#
1
|
ssh-keygen -p -m RFC4716 -f ~/.ssh/id_rsa
|
快速选择指南#
1
2
3
4
5
6
|
你的场景 推荐密钥类型
─────────────────────────────────────────────────
新项目 / 个人使用 Ed25519
需要兼容老系统 RSA-4096
Git 服务 (GitHub/GitLab) Ed25519
云服务器 (AWS/阿里云) Ed25519 或 RSA
|
参考资料#