使用 Fido2 / Yubico 安全密钥进行 SSH 身份验证

使用 Fido2 / Yubico 安全密钥进行 SSH 身份验证

我想知道是否可以使用 FIDO2 针对 ssh 服务器进行身份验证。有许多教程解释了如何使用 GPG 和较新的 Yubikeys 进行 ssh 身份验证,但我找不到任何有关是否可行或如何使用 FIDO2 或 U2F(尤其是 Yubico 安全密钥 NFC)针对 ssh 服务器进行身份验证的信息。

答案1

好消息! OpenSSH 8.2已添加对 FIDO/U2F 的支持。不再需要补丁。

FIDO/U2F 支持

此版本为 OpenSSH 添加了对 FIDO/U2F 硬件身份验证器的支持。U2F/FIDO 是廉价双因素身份验证硬件的开放标准,广泛用于网站身份验证。在 OpenSSH 中,新的公钥类型ecdsa-sk和支持 FIDO 设备ed25519-sk,以及相应的证书类型。

ssh-keygen(1)可用于生成 FIDO 令牌支持的密钥,之后它们可以像 OpenSSH 支持的任何其他密钥类型一样使用,只要在使用密钥时附加硬件令牌即可。FIDO 令牌通常还要求用户通过触摸或点击来明确授权操作。

生成 FIDO 密钥需要附加令牌,并且通常需要用户点击令牌来确认操作:

  $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
  Generating public/private ecdsa-sk key pair.
  You may need to touch your security key to authorize key generation.
  Enter file in which to save the key (/home/djm/.ssh/id_ecdsa_sk): 
  Enter passphrase (empty for no passphrase): 
  Enter same passphrase again: 
  Your identification has been saved in /home/djm/.ssh/id_ecdsa_sk
  Your public key has been saved in /home/djm/.ssh/id_ecdsa_sk.pub

答案2

您可以使用 yubico 提供的 pams。

libpam-yubico可以用于 otp 身份验证。參考

libpam-u2f对于 u2f(不能与 ssh 一起使用,因为它使用仅读取本地端口的 libusb。)

顺便说一句:您不需要 PPA,它已经在 repo 中了(至少在 Debian 中)。

答案3

这可以通过修补 OpenSSH 服务器和客户端

由于此补丁未集成在官方 OpenSSH 代码中并且看起来很不安全,因此它可能包含错误和漏洞。

相关内容