正如标题所说。我们使用ssh连接到许多站点,并希望使用FIDO 2/webauthn进行身份验证。这可能吗?我们需要什么工具?我们使用ubuntu作为客户端和服务器。
vlurs2pr1#
如果将FIDO 2兼容的安全密钥与ecdsa-sk密钥结合使用,则可以在ssh'ing到服务器时实现类似FIDO 2的多因素身份验证。诀窍是用ecdsa-sk(“sk”代表“security key”)和需要输入安全密钥PIN的标志生成一个新的密钥对:
ecdsa-sk
$> ssh-keygen -t ecdsa-sk -C <email address> -O verify-required
出现提示时输入安全密钥的PIN,然后跳过提示以密码保护密钥对(安全密钥及其PIN将保护其使用)。最后,指定保存密钥对的绝对文件路径。您最终将得到一个私钥和一个公钥,正如您所期望的那样。将**.pub文件作为鉴权密钥添加到https://github.com/settings/keys中,然后更新~/.ssh/config**,告诉它使用相应的私钥:
Host github.com IgnoreUnknown UseKeychain AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/name-you-gave-keypair-here
为了测试一切都正常,你可以尝试ssh到GitHub:
$> ssh -T git@github.com
你应该看到这样的东西:Hi UsernameHere!您已成功通过身份验证,但GitHub不提供shell访问权限。现在你有了它-安全密钥支持的多因素身份验证,为您的SSH连接。最后一件事,您需要在服务器和客户端至少使用OpenSSH 8.2,因为它是支持ecdsa-sk密钥对的最早版本。
1条答案
按热度按时间vlurs2pr1#
如果将FIDO 2兼容的安全密钥与
ecdsa-sk
密钥结合使用,则可以在ssh'ing到服务器时实现类似FIDO 2的多因素身份验证。诀窍是用ecdsa-sk
(“sk”代表“security key”)和需要输入安全密钥PIN的标志生成一个新的密钥对:出现提示时输入安全密钥的PIN,然后跳过提示以密码保护密钥对(安全密钥及其PIN将保护其使用)。最后,指定保存密钥对的绝对文件路径。
您最终将得到一个私钥和一个公钥,正如您所期望的那样。将**.pub文件作为鉴权密钥添加到https://github.com/settings/keys中,然后更新~/.ssh/config**,告诉它使用相应的私钥:
为了测试一切都正常,你可以尝试ssh到GitHub:
你应该看到这样的东西:
Hi UsernameHere!您已成功通过身份验证,但GitHub不提供shell访问权限。
现在你有了它-安全密钥支持的多因素身份验证,为您的SSH连接。
最后一件事,您需要在服务器和客户端至少使用OpenSSH 8.2,因为它是支持
ecdsa-sk
密钥对的最早版本。