事实证明,MacOS Tahoe 可以生成并使用 secure-enclave 支持的 SSH 密钥!这取代了类似的项目

有一个共享库 /usr/lib/ssh-keychain.dylib 传统上用于通过实现 PKCS11Provider 接口向 ssh 添加智能卡支持。然而,最近它还实现了 SecurityKeyProivder,它支持直接从安全飞地加载密钥! SecurityKeyProvider 通常用于与 FIDO2 设备对话(例如 libfido2 可用于与您的 Yubikey 对话)。不过,您现在可以使用它来与您的 Secure Enclave 对话!

录音.mov

有关所有选项,请参阅 man sc_auth 和 man ssh-keychain

要创建需要生物识别技术的 Secure Enclave 支持密钥,请运行以下命令并按 TouchID:

% sc_auth 创建 ctk-identity -l ssh -k p-256-ne -t bio

您可以使用 list-ctk-identities 命令确认密钥已创建:

arian@Mac ssh-keychain % sc_auth list-ctk-identities 密钥类型 公钥哈希 Prot 标签 通用名称 电子邮件地址 有效 有效 p-256-ne A71277F0BC5825A7B3576D014F31282A866EF3BC bio ssh ssh 23.11.26, 17:09 是

它还支持列出 ssh 密钥指纹:

% sc_auth list-ctk-identities -t ssh 密钥类型 公钥哈希 Prot 标签 通用名称 电子邮件地址 有效 有效 p-256-ne SHA256:vs4ByYo+T9M3V8iiDYONMSvx2k5Fj2ujVBWt1j6yzis bio ssh ssh 23.11.26, 17:09 YES

可以使用以下命令删除密钥

% sc_auth 删除-ctk-identity -h

您可以使用以下命令从安全飞地“下载”公钥/私钥对:

% ssh-keygen -w /usr/lib/ssh-keychain.dylib -K -N “” 输入身份验证器的 PIN:您可能需要触摸身份验证器才能授权密钥下载。已将 ECDSA-SK 密钥保存到 id_ecdsa_sk_rk % cat id_ecdsa_sk_rk.pub [email protected] AAAAInNrLWVjZHNHLXNoYTitbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyntyAAABBBKiHAiAZhcsZ95 n85dkNGs9GnbDt0aNOia2gnuknYV2wKL3y0u+d3QrE9cFkmWXIymHZMgL+uJA+6mShY8SeykAAAAEc3NoOg== SSH:

您可以仅使用空字符串作为 PIN。由于某种原因,即使相关身份验证器不使用 PIN 而是使用生物识别,openssh 也会始终要求提供该信息。请注意,此处的“私钥”只是对 FIDO 凭证的引用。它不包含任何秘密密钥材料。因此,我指定 -N “” 来跳过加密密码。

现在,如果您将此公钥复制到您的授权密钥文件中,它应该可以工作!

% ssh-copy-id -i id_ecdsa_sk_rk 本地主机 % ssh -o SecurityKeyProvider=/usr/lib/ssh-keychain.dylib 本地主机

您还可以直接将密钥提供给 ssh-agent,而不是将公钥/私钥对下载到文件中。为此,您可以使用以下命令:

% ssh-add -K -S /usr/lib/ssh-keychain.dylib 输入身份验证器的 PIN:已添加居民身份:ECDSA-SK SHA256:vs4ByYo+T9M3V8iiDYONMSvx2k5Fj2ujVBWt1j6yzis % ssh-add -L [email protected] AAAAInNrLWVjZHNHLXNoYTitbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyntyAAABBBKiHAiAZhcsZ95 n85dkNGs9GnbDt0aNOia2gnuknYV2wKL3y0u+d3QrE9cFkmWXIymHZMgL+uJA+6mShY8SeykAAAAEc3NoOg== % ssh-copy-id 本地主机 % ssh -o SecurityKeyProvider=/usr/lib/ssh-keychain.dylib 本地主机

默认使用 SecurityKeyProvider

SecurityKeyProvider 可以在 .ssh/config 中配置,但我建议在 .zprofile 中设置 export SSH_SK_PROVIDER=/usr/lib/ssh-keychain.dylib ,因为该环境变量由 ssh、ssh-add 和 ssh-keygen 获取。

这意味着你可以这样做:

ssh-add -K ssh 我的服务器

或者

ssh-keygen -K ssh -i id_ecdsa_rk_sk 我的服务器

ssh 进入你的服务器

1763924001
#MacOS #上的 #Native #Secure #Enclaved #支持 #ssh #密钥 #GitHub
2025-11-23 17:55:00

Leave a Reply

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