R / Richie全部文章 ↑

Linux · 2 分钟阅读

ssh-keygen

2026 年默认密钥类型:Ed25519。比 RSA 短、比 ECDSA 安全、签名快。新项目别再用 RSA 4096。

生成密钥

# Ed25519(推荐)
ssh-keygen -t ed25519 -C "you@host"

# 指定文件名 + 密码
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C "work"

# 兼容老系统时仍可生成 RSA 4096
ssh-keygen -t rsa -b 4096 -C "you@host"

私钥设密码是默认建议,配合 ssh-agent / 硬件 key(YubiKey)更省心。

文件位置

~/.ssh/
├── id_ed25519            # 私钥
├── id_ed25519.pub        # 公钥
├── config                # 客户端配置
└── known_hosts

权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/config

权限不对,OpenSSH 会拒绝加载。

常用参数

参数 用途
-t 密钥类型(ed25519 / rsa / ecdsa)
-b 比特数(RSA 用)
-f 文件路径
-C 注释(一般是邮箱)
-p 改私钥密码
-e 导出为另一种格式

转换与导出

# 私钥加密码
ssh-keygen -p -f ~/.ssh/id_ed25519

# 转 PEM(给老 Java 应用用)
ssh-keygen -e -m PEM -f ~/.ssh/id_rsa > id_rsa.pem

# 指纹
ssh-keygen -lf ~/.ssh/id_ed25519.pub
ssh-keygen -lvf ~/.ssh/id_ed25519.pub   # 顺手看可视指纹

安全建议

  • 私钥永远不离开本机
  • 多环境用不同密钥,~/.ssh/config 按 Host 绑定
  • 关键私钥加密码,物理设备加 PIN
  • 旧机器的密钥定期轮换(ssh-keygen -lf 看时间)

参考