You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于YubiKey配合ssh-keygen生成及导出ED25519-SK密钥的技术疑问

关于YubiKey配合ssh-keygen生成及导出ED25519-SK密钥的技术疑问

嗨,我来帮你把这些关于YubiKey和ED25519-SK密钥的疑问理清楚,都是很实际的细节点,咱们一个个说:

问题1:ssh-keygen -t ed25519-sk -O resident生成的密钥是不是YubiKey存私钥一半,本地存一半?

其实你说的“一半私钥”是个常见的误解~ 实际的结构是这样的:
当你生成resident类型的ED25519-SK密钥时,YubiKey里存储的是密钥的核心秘密种子,这个种子永远不会离开设备。而本地生成的那个文件(比如默认的id_ed25519_sk)并不是私钥的一部分,而是一个「密钥存根/引用文件」——里面包含了识别这个密钥的唯一标识、对应的公钥信息,以及一个和YubiKey绑定的加密分量。要完成SSH签名,必须同时有这个存根文件和YubiKey的参与,单独的任何一方都无法完成签名操作。

问题2:ssh-keygen -K导出的是什么?为什么每次导出的文件都不一样?

ssh-keygen -K并不会导出私钥的任何一部分,它导出的仍然是「密钥存根」。你发现每次导出的存根不一样是完全正常的,这是设计好的:
每次执行-K时,会生成新的加密分量和绑定信息,这些信息和YubiKey里的秘密种子结合才能工作,但核心的秘密种子始终不会被导出。所以每次导出的存根都是独立的,但都对应同一个YubiKey上的密钥——也就是说,这些存根都需要配合你的YubiKey才能使用,单独拿到存根的人没有办法绕过YubiKey进行认证。

附加问题:有没有办法生成无法通过ssh-keygen -K导出的resident密钥?

当然可以!在生成密钥的时候,加上-O non-extractable选项就行,完整的命令是:

ssh-keygen -t ed25519-sk -O resident -O non-extractable

这个选项会告诉YubiKey把这个resident密钥标记为「不可提取」,这样ssh-keygen -K就无法从设备上导出任何存根文件了。核心的密钥种子仍然存在YubiKey里,你可以正常使用这个密钥进行SSH认证,但无法再导出存根到本地——完美满足你想要的“resident但不可下载”的需求。

备注:内容来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:09:29