我有一个 Yubikey NEO,我正在尝试让它在 Debian 上运行。
当我插入它时,我收到 udev 事件,但没有 /dev/hidraw?设备。
到目前为止我所知道的是:
cat /boot/config-$(uname -r) | grep CONFIG_HIDRAW)
给出:
CONFIG_HIDRAW=y
lsusb -v -d 1050:0211
给出:
Bus 002 Device 013: ID 1050:0211 Yubico.com
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1050 Yubico.com
idProduct 0x0211
bcdDevice 0.20
iManufacturer 1 Yubico
iProduct 2 Yubico WinUSB Gnubby (gnubby1)
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 30mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0000
(Bus Powered)
如果我udevadm monitor
在插入然后拔掉 Yubikey 时运行,我会得到:
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[7941.975349] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
KERNEL[7941.975583] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
UDEV [7941.985350] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
UDEV [7942.998352] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
KERNEL[7945.487692] remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
KERNEL[7945.487791] remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
UDEV [7945.488139] remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
UDEV [7945.488620] remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
我按照建议添加了 udev 规则这里并cat /etc/udev/rules.d/70-u2f.rules
给出:
ACTION!="add|change", GOTO="u2f_end"
#KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", TAG+="uaccess"
ATTRS{idVendor}=="1050", GROUP="plugdev", MODE="0660"
LABEL="u2f_end"
(当注释行未被注释时,这也不起作用。)
我尝试过安装libhidapi-hidraw0
,但这似乎也不起作用。
我还尝试安装和运行 Yubikey NEO 管理器,但它和 yubikey 个性化工具都认为没有插入任何 Yubikey 设备,这就是为什么我认为阻止程序是缺少 /dev/hidraw0 设备(或类似水平的东西)。
我的 Linux 知识和 Google 解决方案的能力都已达到极限,因此进一步的调试建议和(如果您知道的话)解决方案都会有所帮助。
答案1
您必须小心从哪里获得 Yubikey,因为一些二手的 Yubikey 来自 Google 的测试团队。这些不适用于当前版本的 NEO 管理器或个性化工具。
0x02xx 设备是测试设备。
如果您向 yubikey 支持寻求帮助,并提供设备 ID,以及您如何从个人经验中获取所述设备(可能是 eBay),他们将愿意免费 RMA 您的设备,并自费给您寄一个新设备。您的结果可能会有所不同。
祝你好运!
答案2
在我看来,该文件/etc/udev/rules.d/70-u2f.rules
已过期,或者至少被/lib/udev/rules.d/
.如果您已经安装了 yubikey-personalization 软件包,应该有一个文件/lib/udev/rules.d/69-yubikey.rules
.打开该文件,并将您的测试设备 ID (0x0210) 添加到已知 idVendors 列表中。你最终应该得到看起来像这样的东西。这是来自ubuntu wily werewolf,其他操作系统版本可能略有不同,关键是将0211添加到产品ID列表中:
ACTION!="add|change", GOTO="yubico_end"
# Udev rules for letting the console user access the Yubikey USB
# device node, needed for challenge/response to work correctly.
# Yubico Yubikey II
ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0211|0401|0403|0405|0407|0410", \
ENV{ID_SECURITY_TOKEN}="1"
LABEL="yubico_end"
然后,您需要使用 重新加载 udev 规则sudo udevadm control --reload-rules
,然后删除并重新插入密钥。这足以让它为我工作。