ฉันต้องการใช้ Yubikey Neo เพื่อเข้าสู่ระบบ Ubuntu 14.04 นอกจากนี้มันจะเป็นเรื่องง่ายหากหน้าจอถูกล็อคโดยอัตโนมัติทุกครั้งที่ฉันถอดปลั๊ก Yubikey
ฉันต้องการใช้ Yubikey Neo เพื่อเข้าสู่ระบบ Ubuntu 14.04 นอกจากนี้มันจะเป็นเรื่องง่ายหากหน้าจอถูกล็อคโดยอัตโนมัติทุกครั้งที่ฉันถอดปลั๊ก Yubikey
คำตอบ:
อันดับแรกเราต้องกำหนดค่า Yubikey สำหรับการตอบสนองต่อความท้าทาย Yubico ให้คู่มือที่ดีสำหรับ Linux ภายใต้ https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html
ตอนนี้คุณควรจะสามารถใช้ yubikey ของคุณสำหรับการรับรองความถูกต้องที่ล็อกอิน ชิ้นหนึ่งที่สะดวกหายไป: การล็อกหน้าจออัตโนมัติเมื่อถอด Yubikey ออก
ฉันปรับ HowTo จากฟอรัม Yubico เล็กน้อย ( http://forum.yubico.com/viewtopic.php?f=23&t=1143 ) เพื่อให้ตรงกับ LightDM ใน 14.04 และ 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 ลงทะเบียนกับ„ Yubico.com“ ใน lsusb
ปิดและบันทึกไฟล์ นอกจากนี้เราต้องทำให้ไฟล์ที่ปฏิบัติการได้:
sudo chmod +x /usr/local/bin/yubikey
ต่อไปเราจะต้องค้นหาคุณสมบัติของ Yubikey สำหรับการมอบหมายที่เหมาะสม
สำหรับสิ่งนี้ตัวแสดงรายละเอียด USB จะต้องเปิดใช้งาน รายละเอียดสามารถพบได้ในฟอรั่ม Yubico
ในประเภทอาคารผู้โดยสารใหม่ในคำสั่ง
udevadm monitor --environment --udev
ตอนนี้คุณ (un-) เสียบ yubikey ของคุณและรับรายการรหัส กำลังมองหา
ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT
พวกเขาจะถูกใช้ในไฟล์ udev สำหรับการรับรู้ของ Yubikey
คำแนะนำ:รหัสผู้ขายจะเปลี่ยนแปลงหากคุณกำหนดค่า Stick ใหม่ (เช่นใช้ CCID)
นอกจากนี้ให้สร้างไฟล์ด้วย
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 ตามคีย์ของคุณ หมายเหตุ: คุณสามารถเพิ่ม yubikey ได้มากขึ้นโดยการคัดลอกอย่างง่าย ๆ วางบรรทัดด้วยรหัสอื่น ๆ !
ปิดและบันทึกไฟล์ ในที่สุดบริการ udev จะต้องโหลดกฎ:
sudo udevadm control --reload-rules
sudo service udev reload
คุณสามารถเพิ่มการฆ่า 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]
ID_SERIAL_SHORT
เลยฉันเลยข้ามไป