- Prvně je potřeba mít veškeré balíčky pro správnou funkčnost.
sudo pacman -Syu gnupg pcsclite ccid hopenpgp-tools yubikey-personalization
- dále je potřeba nastavit, popř. vytvořit konfigurák aby jako první linux četl právě pcscd karty, ten bude umístěn v ~/.gnupg/scdaemon.conf
scdaemon.conf
pcsc-driver /usr/lib/libpcsclite.so
card-timeout 5
disable-ccid
- kontrola zda vůbec běží pcscd se provede pomocí "systemctl status pcscd"
- pokud by byl problém, může být vypnutý , tak dáme "systemctl enable pcscd"
PROSTŘEDÍ GNOME: Nyní nástroj pcscd vidí náš yubikey, teď potřebujeme, aby se OpenSSH dotazoval na Yubikey, tedy aby si ssh-add -L nakešovalo klíč z GPG... To se provede takhle:
Vytvoříme soubor třeba
yubikey_runner.sh
#!/bin/sh
echo "Create required directories"
mkdir ~/.config/autostart
mkdir ~/.config/environment.d
echo "==> Disable Gnome-Keyring ssh component"
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart
echo "Hidden=true" >> ~/.config/autostart/gnome-keyring-ssh.desktop
echo "==> Point ssh agent socket environment variable to GnuPG"
cat > ~/.config/environment.d/99-gpg-agent_ssh.conf <<'EOF'
SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
EOF
echo "==> Done"
echo
echo "Logout and after login GnuPG will be your ssh-agent"
echo
- Provedeme restart a je hotovo, nyní by se mělo zobrazit okno pro zadání PIN při přihlášení přes SSH, za předpokladu, že veřejný klíč již máme na serveru v .ssh/authorized_keys a hlavně !! Ve správném formátu !!
Funguje i na manjaro KDE
- Může se hádat s "KGPG" (https://utils.kde.org/projects/kgpg/ ) --> Ten doporučuji smazat
sign_and_send_pubkey: signing failed: agent refused operation
- měl by pomoct příkaz níže pokud odinstalujeme "KGPG" a stále se nám zobrazuje hláška "sign_and_send_pubkey" failed atd ...
gpg-connect-agent updatestartuptty /bye
- pokud nám to problém vyřeší ale po restartu se objeví znova, je možné, že gnupg načítá špatný pinentry modul (dialogové okno ať už v CLI nebo GUI) a tím dochází k chybě... proto je potřeba vytvořit konfigurák, který si načte... pokud jej tedy už nemáme...
~/.gnupg/gpg-agent.conf
enable-ssh-support
default-cache-ttl 60
max-cache-ttl 120
pinentry-program /usr/bin/pinentry-curses
zjistit co za pinentry možnosti máme ... já mám KDE tak používám pinentry-program /usr/bin/pinentry-qt
- Jinak ještě doporučuji zkontrolovat ostatní složky, které jsme vytvořily, pokud by něco nefungovalo. Ale na čerstvém Manjaro GNOME/KDE funguje, XFCE jsem netestoval...