背景

在现代 Linux 系统中,SSH 公钥认证已成为远程登录与自动化运维的基础设施之一。随着密码学实践的演进,Ed25519 已成为 OpenSSH 官方推荐的默认算法。本文记录在 Linux 环境下生成 Ed25519 SSH key 的最小且安全做法,并澄清若干常见误解,重点面向:

  • 每台系统各自维护一把 SSH key
  • 不依赖 GUI,不引入额外工具
  • 关注长期可维护性与可重复性

全文仅涉及事实与机制,不包含个人偏好或架构建议。


一、推荐的算法选择

当前时间节点(2025–2026 年前后),在 OpenSSH 环境中:

  • Ed25519 是默认推荐算法
  • 相比 RSA,key 更短、计算更快、实现更简洁
  • 安全性在可预期的未来仍然充足

因此,以下示例均以 Ed25519 为前提。


二、生成 Ed25519 SSH Key 的标准命令

在 Linux 命令行下,生成一把偏安全取向的 Ed25519 key:

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519_$(hostname) -C "$(hostname)"

参数说明

  • -t ed25519
    指定使用 Ed25519 算法。
  • -a 100
    设置 KDF(Key Derivation Function)迭代次数,用于保护私钥 passphrase,提升抗离线暴力破解能力。
  • -f ~/.ssh/id_ed25519_$(hostname)
    指定输出文件名。此处使用主机名,仅用于文件区分,不参与认证逻辑。
  • -C "$(hostname)"
    设置公钥注释(comment),用于人工识别 key 来源。

执行后将生成:

~/.ssh/id_ed25519_<hostname>        # 私钥
~/.ssh/id_ed25519_<hostname>.pub    # 公钥

三、关于 passphrase

生成过程中会提示输入 passphrase:

  • passphrase 是私钥的第二道保护
  • 不影响 SSH 协议本身
  • 可与 ssh-agent 配合,避免频繁输入

是否设置 passphrase 不影响 key 的数学有效性,但会影响私钥泄露后的风险等级。


四、公钥最后的“名字”是什么?

典型的 Ed25519 公钥内容如下:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI… example-name

其结构为:

[算法] [base64 编码的公钥主体] [comment]

其中:

  • 前两部分:参与 SSH 认证校验
  • 最后一部分(comment)
    • 纯文本注释
    • 仅供人类阅读
    • SSH 认证时完全忽略

五、修改主机名或注释是否影响 key 可用性?

结论非常明确:

不会。

SSH key 的可用性只取决于:

  • 私钥
  • 与之匹配的公钥主体

与以下内容完全无关

  • 主机名是否变更
  • key 文件名
  • 公钥 comment 内容

即使:

  • 系统 hostname 已修改
  • 公钥 comment 仍为旧名称

只要私钥与公钥主体匹配,SSH 认证仍然正常工作。


六、修改公钥 comment 的方式

方法一:使用 ssh-keygen(推荐)

ssh-keygen -c -f ~/.ssh/id_ed25519_xxx -C "new-name"

该操作:

  • 不生成新 key
  • 不改变私钥
  • 仅更新 .pub 文件中的 comment

方法二:直接编辑 .pub 文件

vim ~/.ssh/id_ed25519_xxx.pub

只修改最后一段文本即可,不影响任何认证行为。


七、一个容易混淆的点:ksshaskpass

在 KDE 等桌面环境中,生成或使用 SSH key 时可能弹出图形化密码输入框,这通常由 ksshaskpass 提供。

需要明确的是:

  • 生成 key 的命令始终是 ssh-keygen
  • ksshaskpass 只负责 passphrase 的 GUI 输入
  • 不存在名为 ksshkeygen 的工具

总结

  • Ed25519 是当前 Linux / OpenSSH 环境下的默认优选算法
  • ssh-keygen 是唯一需要使用的生成工具
  • 公钥中的 comment 可随意修改,不影响认证
  • 主机名变更不会导致 SSH key 失效

SSH key 本质上是数学对象,而非“绑定名称的凭证”。理解这一点,有助于长期维护大量系统与 key 时保持确定性与可控性。

Leave a Reply

Your email address will not be published. Required fields are marked *