YubiKey 5 NFC na Linuxu
YubiKeys jsou šikovní pomocníci, ať už pro passwordless sudo, SSH, přihlášení skrz PIV atd. Již několikrát jsem přeinstalovával počítač(e) a už mě nebaví googlit/používat AI, jak co zprovoznit, proto jsem si sepsal, co a jak dělat. Tak třeba to pomůže i někomu jinému. :-)
Sudo bez hesla
Fyzický bezpečnostní klíč YubiKey 5 NFC lze využít nejen pro dvoufaktorové ověřování, ale i pro sudo v Linuxu.
V tomto návodu popisuji, jak nakonfigurovat přihlašování pomocí modulu PAM U2F pro sudo. Lze tak povolit buď sudo pouze pomocí YubiKey, nebo kombinované 2FA (heslo + klíč). Návod slouží primárně pro Arch, ale lze v pohodě použít i na jiných distribucích.
Předpoklady
Než začnete, ujistěte se, že máte:
- Nainstalovaný balíček
pam-u2f(Arch)/libpam-u2f(Ubuntu/Debian)
sudo pacman -S pam-u2f
- Nakonfigurovaný YubiKey pomocí programu YubiKey Manager (je třeba nastavit PIN).
Základní nastavení
- Připojte svůj YubiKey do USB portu.
- Vytvořte adresář pro konfiguraci (pokud ještě neexistuje):
mkdir ~/.config/Yubico
- Zaregistrujte svůj klíč:
pamu2fcfg > ~/.config/Yubico/u2f_keys
Pokud je pro klíč nastaven PIN, zadejte jej. Jakmile kontrolka YubiKey bliká, dotkněte se klíče pro potvrzení. 4. (Volitelné) Přidejte další klíče, pokud jich chcete používat víc:
pamu2fcfg -n >> ~/.config/Yubico/u2f_keys
Konfigurace PAM (Pluggable Authentication Module)
Otevřete soubor pro konfiguraci přihlášení přes sudo:
sudo nano /etc/pam.d/sudo
(Nebo použijte svůj oblíbený editor, např. sudo nvim /etc/pam.d/sudo.)
Pro přihlášení bez hesla (passwordless login) přidejte tento řádek před sekci:
@include common-auth
Vložte:
auth sufficient pam_u2f.so
Výsledná sekce pak bude vypadat přibližně takto:
auth sufficient pam_u2f.so
@include common-auth
Alternativa: Dvoufaktorové ověřování (2FA)
Pokud nechcete zcela odstranit klasické přihlášení heslem, ale pouze přidat YubiKey jako druhý faktor, upravte soubor /etc/pam.d/sudo takto:
@include common-auth
auth required pam_u2f.so
Tím zůstane zachováno ověření heslem a následně bude požadováno dotknutí se YubiKey.
Test funkčnosti
Než soubor uložíte a opustíte terminál, ověřte správnost konfigurace. V novém okně nebo záložce terminálu spusťte:
sudo echo test
- Pokud jste nastavili přihlášení pouze pomocí YubiKey, kontrolka začne blikat a po dotyku se příkaz provede.
- Pokud máte 2FA režim, budete nejprve vyzváni k zadání hesla a poté k potvrzení dotykem YubiKey.
Jestliže příkaz printne test, můžete konfiguraci uložit a terminál zavřít.
SSH pomocí YubiKey
Když si jednou vygenerujete SSH klíče, tak se uloží na YubiKey a můžete si je přenášet skrz počítače, což může být dost praktické. Níže jsem sepsal kraťoučký návod jak na to.
Předpoklady
Než začnete, ujistěte se, že máte:
- Nainstalované balíčky
libfido2apcsc-tools
sudo pacman -S yubikey-manager pcsc-tools libfido2
- Nakonfigurovaný YubiKey pomocí programu YubiKey Manager (je třeba nastavit PIN).
Pak můžeme vygenerovat klíče pomocí tohoto příkazu:
ssh-keygen -t ed25519-sk -O resident -O verify-required -C "xxx"
Vysvětlení jednotlivých částí:
ssh-keygen: Základní nástroj OpenSSH pro tvorbu SSH klíčů.
-t ed25519-sk: Typ klíče—Ed25519 na FIDO2 bezpečnostním klíči (sk=security key); vyžaduje firmware YubiKey 5.2.3+.
-O resident: Ukládá klíč natrvalo na YubiKey (přenositelný mezi stroji; přepíše výchozí slot).
-O verify-required: Povinné ověření (PIN + dotyk) při každém použití — pro vyšší bezpečnost. Lze vynechat, pak stačí dotyk.
-C "xxx": Komentář pro identifikaci klíče.
Následně:
Zadáte PIN.
Dotknete se YubiKey pro autorizaci.
Klíče se uloží do ~/.ssh/id_ed25519_sk(.pub).
A je hotovo, klíč je uložený v YubiKey a lze ho pouze vygenerovat pomocíssh-keygen -Kna jakémkoliv Unix PC (pokud jsou nainstalované příslušné balíčky výše + někdy může chybět openssh).