我想用我的 Yubikey Neo 登录 Ubuntu 14.04。另外,如果每次拔掉 Yubikey 时屏幕自动锁定,那就太方便了。
答案1
首先,我们需要配置 Yubikey 以进行质询响应。Yubico 提供了一个很好的 Linux 手册,网址为 https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html
现在您应该能够在登录时使用 Yubikey 进行身份验证。缺少一个方便的功能:移除 Yubikey 时自动锁定屏幕。
我稍微改编了 Yubico 论坛上的 HowTo(http://forum.yubico.com/viewtopic.php?f=23&t=1143) 与 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-tool(用于使用 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
答案2
您还可以使用以下命令终止所有 TTY pkill -KILL -t
:
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]