使用Yubikey Neo登录2FA和锁定屏幕


13

我想使用Yubikey Neo登录Ubuntu 14.04。此外,如果每次拔下Yubikey时屏幕都自动锁定,这将很方便。

Answers:


11

首先,我们需要配置Yubikey来应对挑战。Yubico在https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html下为Linux提供了很好的手册。

现在,您应该可以在登录时使用yubikey进行身份验证。缺少一个方便的部件:删除Yubikey时屏幕的自动锁定。

我对Yubico论坛(http://forum.yubico.com/viewtopic.php?f=23&t=1143)的HowTo进行了一些调整,以使其与14.04中的LightDM和Yubikey Neo匹配。

首先,使用以下命令创建一个新文件,以在不显示Yubikey时锁定屏幕:

sudo nano /usr/local/bin/yubikey

将以下内容写入文件:

#!/bin/bash 
# Double checking if the Yubikey is actually removed, Challenge-Response won't trigger the screensaver this way.

if [ -z "$(lsusb | grep Yubico)" ]; then
        logger "YubiKey Removed or Changed"
        # Running the LightDM lock command
        export XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0" 
        /usr/bin/dm-tool lock
fi

与原始文件最大的不同是使用dm工具(用于使用lightdm锁定屏幕)和搜索词Yubico,因为Yubikey Neo在lsusb中的“ Yubico.com”中已注册。

关闭并保存文件。另外,我们必须使文件可执行:

sudo chmod +x /usr/local/bin/yubikey

接下来,我们必须找到Yubikey的属性以进行适当的分配。

为此,必须激活USB描述符。可以在Yubico论坛上找到详细信息。

在新的终端中输入命令

udevadm monitor --environment --udev

现在,您(取消)插入yubikey并获得ID列表。寻找

ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT

它们将在udev文件中用于识别Yubikey。

提示:如果您重新配置操纵杆(例如,使用CCID),则供应商ID会更改

此外,使用

sudo nano /etc/udev/rules.d/85-yubikey.rules

然后输入以下内容

# Yubikey Udev Rule: running a bash script in case your Yubikey is removed 
ACTION=="remove", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0010", ENV{ID_SERIAL_SHORT}=="0001711399", RUN+="/usr/local/bin/yubikey"

根据您的密钥更改ID。注意:您可以通过简单的复制和其他ID粘贴行来添加更多yubikey!

关闭并保存文件。最后,udev服务必须重新加载规则:

sudo udevadm control --reload-rules
sudo service udev reload

我在14.04上尝试过此操作,但没有,ID_SERIAL_SHORT所以我跳过了它。
帕维尔Prażak

我知道这个线程很旧,但是仍然是搜索时的最佳结果。删除ID_SERIAL_SHORT很危险,因为您删除了密钥唯一的一个标识符。当然,假设您还想创建一个用于解锁的脚本。如果ID_SERIAL_SHORT不存在,则可能是您没有使用个性化工具启用正确的标志。
索引

0

您还可以使用pkill -KILL -t以下命令杀死所有TTY :

if [ -z "$(lsusb | grep Yubico)" ]; then
    logger "YubiKey Removed or Changed"
    # Running the LightDM lock command
    export XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0" 
    /usr/bin/dm-tool lock

    ACTIVE_TTY=$(who | awk '{ print $2 }' | grep tty | uniq)
    echo $ACTIVE_TTY | xargs -I {} pkill -KILL -t {}
fi

还似乎存在来自的文件权限问题lightdm,以解决该问题:

sudo chown lightdm:root /etc/yubico/[user]-[number]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.