OE :Operations Engineer
SSH 常用密钥类型(RSA / Ed25519 / ECDSA / DSA) 主要有四种,下面将从原理、安全、性能、兼容性、适用场景多个方面分条列述。
一、SSH 密钥有哪几种?
主流 4 种:
- RSA:最古老、兼容性最好(GitBlit 1.8.0 只认它)
- Ed25519:现代、最快、最安全(你用的这种,旧系统不认)
- ECDSA:椭圆曲线、NIST 标准,安全中等
- DSA:老旧、不安全、已废弃,不要再用
二、每种密钥详解
1)RSA(最兼容、老牌)
- 诞生:1977 年,SSH 从一开始就支持
- 原理:基于大整数分解难题
- 长度:常用 2048 / 4096 bit(越长越安全、越慢)
安全强度:
2048 ≈ 112 位安全
4096 ≈ 128 位安全
优点:
兼容性最强:所有旧服务器、老 Git 系统(GitBlit 1.8.0)都支持
可用于加密 + 签名
缺点:
速度慢(生成、连接都比 Ed25519 慢)
密钥长:2048 公钥约 370+ 字符
生成命令
bash
ssh-keygen -t rsa -b 2048 -C "your@mail.com"
适用:老系统、兼容性优先(GitBlit 1.8.0、旧交换机、老 Linux)
2)Ed25519(现代首选、最快最安全)
- 诞生:2011 年,OpenSSH 6.5(2014)开始支持
- 原理:椭圆曲线 Curve25519(EdDSA 签名)
- 长度:固定 256 bit(很小)
安全强度:256bit ≈ RSA 3072bit 以上(约 128 位安全)
优点:
速度极快:生成、签名、验证都比 RSA 快很多
密钥极小:公钥仅 68 字符左右,复制不易错
抗侧信道攻击、抗量子潜力更好
缺点:
旧系统不支持(GitBlit <1.9.0、OpenSSH <6.5 不认)
生成命令
bash
ssh-keygen -t ed25519 -C "your@mail.com"
适用:新服务器、GitHub/Gitee/GitLab、日常主力
3)ECDSA(椭圆曲线、NIST 标准)
- 原理:NIST 标准椭圆曲线(P-256/P-384/P-521)
- 长度:256/384/521 bit
- 安全:256bit ≈ RSA 3072bit
特点:
- 比 RSA 快、比 Ed25519 慢
- 企业合规(FIPS)常用
- 曲线安全性有争议(NSA 参与设计)
生成
bash
ssh-keygen -t ecdsa -b 256 -C "your@mail.com"
适用:政府 / 金融合规环境
4)DSA(彻底淘汰,别用)
- 原理:离散对数
- 长度:固定 1024 bit(安全不足)
- 现状:OpenSSH 7.0 默认禁用,10.0 彻底删除支持
- 结论:完全废弃,不要生成、不要使用
三、四种密钥直观对比(重点)
表格
| 类型 | 安全 | 速度 | 兼容性 | 密钥长度 | 推荐度 |
|---|---|---|---|---|---|
| RSA 2048/4096 | 中高 | 慢 | ✅ 最好 | 长 | 老系统必选 |
| Ed25519 | 极高 | 最快 | ❌ 旧系统不行 | 很短 | 新系统首选 |
| ECDSA P-256 | 高 | 中 | 一般 | 短 | 合规场景 |
| DSA | 低 | 中 | 差(已淘汰) | 固定 1024 | ❌ 禁用 |
四、日常使用最佳建议
新服务器 / GitHub / Gitee / GitLab:一律用 Ed25519
bash
ssh-keygen -t ed25519 -C "your@mail.com"
老系统(GitBlit <1.9、旧设备):用 RSA 2048/4096
bash
ssh-keygen -t rsa -b 2048 -C "your@mail.com"
永远不要用 DSA