Zum Inhalt

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:

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

Es 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 obigen Einstellungen vornehmen. Dann könnt ihr euch auch schon mit jeder virtuellen Box und dem YubiKey an Servern per SSH anmelden.

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by Brina Blum on Unsplash