使用 Yubikey 5 NFC 进行无密码登录

Ale*_*mer 11 login yubikey 19.04

我刚买了一个 Yubikey 5 NFC,并按照他们在 Ubuntu 19.04 上的说明进行了设置。但我的首选用例是将密钥用作无密码选项(如果已插入;允许访问 - 如果不是;输入密码)。

我在这里这里找到了一些关于这个的主题,但两者要么不适合 Yubikey,要么不适合 Ubuntu。而且我对这些东西太缺乏经验,无法盲目地摆弄设置,因为如果我做错了什么,我很有可能永远被锁定。

所以我知道 Yubikey 5 支持 Windows 的无密码登录,我认为它必须以某种方式在 Ubuntu 上可用,对吧?有没有人给我提示?

编辑:为下面提出的有效观点提供一些上下文,即此设置不会提高安全性,事实上,会降低安全性:是的,我知道,确实非常正确。然而,在我的情况下,我主要在我自己(安全的)家中工作,但我对非常复杂的密码持保留态度。然而,这让我变慢了,每次我的笔记本电脑闲置太长时间时,我都必须输入一个很长的密码,所以当我在家时,我希望能够只使用密钥,如果我不在,将钥匙留在家中,只需使用密码即可。

Edit2:感谢hackerb9的回答并再次运行Yubico安装步骤,我让它工作了。本质上,我所做的所有不同之处都是添加auth sufficient pam_u2f.so/etc/pam.d/gdm-password/etc/pam.d/sudo而不是@include common-u2f(这会导致auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue)。所以基本上只是删除authfile=/etc/u2f_mappings cue了诀窍。我不是 100% 确定,但我认为这是由于“设置冲突”造成的,因为我在尝试之前设置了密钥。

hac*_*rb9 14

你担心把自己关在外面是对的。如果您的主目录已加密并且您在那里保留了两因素身份验证授权映射文件,您将无法登录!这就是为什么我总是使用中央 authfile ( /etc/u2f_mappings)。

我建议在测试时创建第二个帐户,这样您就不会将自己锁定在主帐户之外。另外,请确保获得第二个 2FA 密钥并将其注册为备份,以防您丢失第一个。

如何启用无密码登录

尽管您应该小心,但该过程简单明了。为了使它更容易,我写了这个,所以你可以简单地将以下命令剪切并粘贴到终端中:

  1. sudo apt install libpam-u2f

  2. pamu2fcfg | sudo tee /etc/u2f_mappings

    #(此时,按下按钮。您应该看到一长串数字。如果没有,请确保您已udev正确设置。)

  3. sudo -i

  4. cd /etc/pam.d

  5. echo 'auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue' > common-u2f

  6. for f in gdm-password lightdm sudo login; do

    mv $f $f~

    awk '/@include common-auth/ {print "@include common-u2f"}; {print}' $f~ > $f

    done

  7. exit

笔记

  • 登录时,如果检测到设备,系统会提示您触摸设备,否则,系统会要求您输入密码。

  • 我们使用术语“足够”的上方,使得无论是密码或U2F键足以登录(如问题的要求)。对于更典型的双因素身份验证登录,“足够”将替换为“必需”一词,以便始终需要两者。

  • pam.d 文件中的 u2f 行必须位于 之前@include common-auth,否则您将需要在检查 U2F 密钥之前输入密码。

  • 如果我没有指出以这种方式使用“2FA”密钥虽然方便,但不会增加您的安全性,那我就失职了。事实上,您只打开了第二种方式来进入您的帐户。但是,这不一定是坏事。不是每个人都需要高安全性,这样的加密狗可以使您免于使用易于键入、简短且易受攻击的密码。

还有更多!

顺便说一下,这些说明不仅适用于 Yubico 的设备。我使用的是Solokeys的密钥,效果很好。此外,该设置适用于 USB 和 NFC 密钥。

如果您需要更多信息,Yubico 的说明(如原始问题中所述)提供了相当丰富的信息。另外,请参阅手册页pam_u2fpamu2fcfg


sel*_*ect 5

这是我的方法:

要使用 yubikey 启用无密码 sudo,请执行以下操作

  • 打开终端。
  • 插入您的 U2F 密钥。
  • 跑步:mkdir -p ~/.config/Yubico
  • 跑步:pamu2fcfg > ~/.config/Yubico/u2f_keys
  • 当您的设备开始闪烁时,触摸金属触点以确认关联。

现在通过编辑以下文件将 sudo 配置为在可用时使用密钥(否则使用密码)

sudo nano /etc/pam.d/sudo
Run Code Online (Sandbox Code Playgroud)

之前添加auth@include

auth sufficient pam_u2f.so
@include common-auth
Run Code Online (Sandbox Code Playgroud)

要使用 yubikey 作为密码之外的第二个因素,请/etc/pam.d/sudo按以下方式进行编辑

@include common-auth
auth       required   pam_u2f.so
Run Code Online (Sandbox Code Playgroud)

auth之后的位置@include