YubiKey 14 – SSH-Anmeldung mit einem Linux-Client mit YubiKey an einem Server

Ein YubiKey kann genutzt werden, um eine SSH-Verbindung zu einem entfernten Linux-Server zu authentifizieren.

Auf einem Linux-System wird dabei der Authentifizierungsschlüssel vom gnupg-agent an den ssh-agent übergeben.

Der Vorteil ist ganz klar, der erforderliche SSH-Schlüssel wird NICHT auf dem Client gespeichert, sondern es wird der GnuPG-Authentifizierungsschlüssel genutzt, der sicher durch Passwort geschützt auf dem YubiKey verbleibt.

Eine Anleitung zum Konfigurieren des PuTTYs unter Windows findet ihr hier im Blog:

YubiKey 11 – Windows System anpassen zur Anmeldung mit einem YubiKey an einem Linux-Server

Zur YubiKey Themenseite gehts ➡ hier

Yubico - YubiKey 5C NFC - Two Factor Authentication USB...
Angebot Yubico Y-291 Yubikey 5Ci

Er werden einige Programme auf dem Linux-System benötigt, um den YubiKey ansprechen zu können. Die notwendigen Tools sind in den Repositories vorhanden und können einfach installiert werden.

sudo apt install gnupg gnupg-agent pcscd scdaemon

Nach der Installation der Pakete kann gleich geprüft werden, ob Ubuntu den YubiKey erkennt.

gpg --card-status

Wird der YubiKey erkannt, dann kann die eigentliche Konfiguration beginnen.

Zuerst lässt man sich den GnuPG agent-ssh-socket Pfad ausgeben.

gpgconf --list-dirs | grep ssh

Ausgabe sieht etwa so aus:

agent-ssh-socket:/run/user/1000/gnupg/S.gpg-agent.ssh

Dann wird der Pfad als SSH_AUTH_SOCKETUmgebungsvariable festgelegt

export SSH_AUTH_SOCK=/run/user/1000/gnupg/S.gpg-agent.ssh

Im Terminal könnt ihr gleich prüfen, ob die Konfiguration erfolgreich war, es wird euer YubiKey ausgegeben.

ssh-add -l

Die vorgenommenen Einstellungen sind nur temporär. Eine permanente Konfiguration kann mit dem folgenden Skript eingestellt werden. Erstellt in irgendeinem Ordner ein neues bash-Skript.

nano yubikey-ssh.sh

Das Skript ausführbar machen und starten:

chmod +x yubikey-ssh.sh
./yubikey.sh

Das Skript nimmt die erforderlichen Einstellungen automatisch vor.

Create required directories
==> Disable Gnome-Keyring ssh component
==> Point ssh agent socket environment variable to GnuPG
==> Done

Logout and after login GnuPG will be your ssh-agent

Der Inhalt des Skripts ist

#!/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

➡ Quelle: https://gist.github.com/artizirk/d09ce3570021b0f65469cb450bee5e29

Die Anmeldung an einem entfernten Server funktioniert dann wie gehabt. Es erfolgt lediglich eine Abfrage eures YubiKey PINs.

ssh benutzer@ip-adresse

 

Das hier vorgestellte Verfahren funktioniert auch wunderbar in einer virtuellen Maschine. Einfach den YubiKey am Host anschließen und an den Gast übergeben und die obige Einstellungen vornehmen. Dann könnt ihr euch auch schon mit jeder virtuellen Box und dem YubiKey an Servern per SSH anmelden.

 

Eine Anleitung zum Erstellen einer virtuellen Maschine mit Oracles VirtualBox findet ihr ➡ hier

Photo by Brina Blum on Unsplash

(**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.