Zum Inhalt

Windows anpassen zur SSH-Anmeldung an einem Linux-System

Eine Anmeldung an einem entfernten Server mit SSH ist im Linux-Umfeld zur Administration keine große Sache und schnell eingerichtet. Als Besitzer eines YubiKeys kann man das alles noch ein wenig effizienter und eleganter lösen.

Der YubiKey mit OpenPGP Smart Card Funktion wird zu Authentifizierung verwendet. Dabei wird aus dem GPG-Schlüssel ein öffentliche SSH-Schlüssel erstellt, der auf den entfernten Server in der Datei ~/.ssh/authorized_keys gespeichert wird.

Der YubiKey wird am Client angeschlossen und nach der Eingabe des PINs wird eine SSH-Verbindung zum Server hergestellt.

Das Besondere, einen privaten SSH-Schlüssel, der auf dem eigenen Client abgespeichert werden muss, gibt es nicht. Der private Schlüssel ist und bleibt auf dem YubiKey.

Ein Windows-System ist dafür noch anzupassen. Im Standard kann das Betriebssystem die Daten des YubiKeys nicht auslesen und für die Anmeldung verwenden.

Die Voraussetzungen sind

  • der YubiKey muss dazu am Client angeschlossen sein
  • der Client muss den GnuPG-Schlüssel in SSH übersetzen
  • der Client muss die Erlaubnis haben sich mit dem Server zu verbinden
  • der YubiKey-PIN muss beim Aufbau der SSH-Verbindung eingegeben werden

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.

Das Ganze ist keine große Sache und auch relativ einfach umgesetzt und konfiguriert.

Windows - PuTTY mit YubiKey verbinden

Es werden die folgenden Tools benötigt:

Bei der Installation von gpg4win werden nicht alle angebotenen Komponenten benötigt.

Die folgenden drei Tools sind jedoch zwingend zu installieren:

  1. Kleopatra
  2. GpgOL
  3. GpgEX

Nach der Installation könnt ihr die Eingabeaufforderung öffnen die GPG-Version abfragen.

gpg --version

Windows GPG-Version abfragen

Wichtig ist dabei der Installationspfad. (siehe Markierung im Screenshot)

Die Datei gpg-agent.conf ist im Verzeichnis

C:\Users\destroy\GnuPG\

oder

C:\Users\benutzername\AppData\Roaming\

zu finden.

Ist die Datei noch nicht vorhanden, dann könnt ihr diese sehr einfach mit einem Editor anlegen.

Dort tragt ihr die Zeile im Abschnitt ###+++--- GPGConf ---+++### ein.

  enable-putty-support

Der gesamte Inhalt der Datei sieht dann in etwa so aus:

enable-putty-support
enable-ssh-support
use-standard-socket
default-cache-ttl 600
max-cache-ttl 7200

gpg-agent.conf

Anschließend startet ihr den gpg-Daemon neu.

  C:\gpg-connect-agent killagent /bye
  C:\>gpg-connect-agent /bye

Nun ist noch eine Verknüpfung zwischen Git Bash und GPG zu erstellen. Dazu öffnet ihr an beliebiger Stelle Git Bash über das Kontextmenü.

  $ eval $(/usr/bin/ssh-pageant -r -a "/tmp/ssh-pageant-$USERNAME")
  ssh-pageant pid 16804

Kontextmenü - Git Bash

Beim Starten ohne eval werden einige Informationen mehr ausgegeben.

$ /usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME"
SSH_AUTH_SOCK='/tmp/.ssh-pageant-user'; export SSH_AUTH_SOCK;
SSH_PAGEANT_PID=16804; export SSH_PAGEANT_PID;
echo ssh-pageant pid 16804

Anschließend muss noch ein Eintrag in der .bashrc erfolgen, damit ssh-pageant automatisch startet.

export LC_ALL="de_DE.UTF-8"
alias gp='git fetch -p && git pull'
alias gpgw='winpty /c/devtools/gnupg/bin/gpg'
alias gpg2='gpgw'
eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")
export SSH_PAGEANT_PID=$(ps | grep $(which ssh-pageant) | head -n 1 | awk '{print $1}')

.bashrc

Die Anmeldung mit dem YubiKey von einem Windows-System aus funktioniert nur, wenn Kleopatra gestartet wurde und im Hintergrund läuft.

Anschließend kann per Git Bash oder PuTTY eine SSH-Sitzung geöffnet werden. Es erscheint dann ein Eingabefeld für die PIN des YubiKeys.

Kontrolliert in den Einstellungen von Kleopatra, dass die Einstellungen korrekt gesetzt sind.

Kleopatra - Einstellungen

Zugriff auf Git ausschließlich mit YubiKey

Damit kann auch unter Windows der YubiKey verwendet werden und eine Anmeldung via PuTTY am Linux-Server erfolgen.

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 Danielle Rice on Unsplash