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_SOCKET
Umgebungsvariable 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.
YubiKey Themenseite
Hier geht es zur 👉 YubiKey Themenseite, dort findest du noch mehr Beiträge rund um den YubiKey.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️
Source
Photo by Brina Blum on Unsplash