SSH für die Serververwaltung#

Diese Anleitung erklärt, wie Sie Ihren SSH-Server und -Client für die Verwendung mit dem Nitrokey vorbereiten.

Der Nitrokey sollte bereits PGP-Schlüssel installiert haben und der lokale GnuPG-Schlüsselbund sollte die Schlüssel kennen.

Vorbereitung auf dem Host Rechner#

  • Stellen Sie sicher, dass ~/.gnupg/gpg.conf ‚use-agent‘ enthält;

  • Hinzufügen von SSH-Unterstützung zu gnupg-agent durch Hinzufügen von ‚enable-ssh-support‘ zu ~/.gnupg/gpg-agent.conf

  • Wenn die Datei noch nicht vorhanden ist, können Sie sie einfach erstellen.

  • Fügen Sie den folgenden Code irgendwo in Ihre ~/.bashrc ein (für Fish Shell, siehe hier)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Starten Sie einfach Ihr System neu oder versuchen Sie pkill gpg-agent und öffnen Sie eine neue Befehlszeile, um sicherzustellen, dass alles richtig eingestellt ist

  • Bei Problemen versuchen Sie bitte gpg2 --card-status bei der ersten Verwendung, um sicherzustellen, dass der gpg-agent gestartet wird

Vorbereitung für den Server#

Sie können eine authorized_keys-Datei erzeugen, indem Sie entweder

gpg2 --export-ssh-key keyID >> ~/authorized_keys

wobei

keyID

ist die Unterschlüssel-ID, die für die Authentifizierung auf Ihrem Nitrokey verwendet wird. Der Nitrokey muss dem lokalen GnuPG-Schlüsselbund bereits bekannt sein. Sie können diese Datei nun an die authorized_keys eines entfernten Servers anhängen, und wenn Sie sich per ssh mit dem Server verbinden, werden Sie nach einer Pin statt einer Passphrase gefragt.

Fehlersuche#

Wenn Sie immer noch nach einem Passwort gefragt werden, stellen Sie bitte sicher, dass

echo $SSH_AUTH_SOCK

liefert etwas wie ‚/run/user/1000/gnupg/S.gpg-agent.ssh‘ oder ‚/home/username/.gnupg/.S.gpg-agent.ssh‘. Leider gab es in der Vergangenheit einige Änderungen in GnuPG, so dass sich der tatsächliche Inhalt je nach System und GnuPG-Version unterscheiden kann. Auf manchen Systemen können sogar mehrere Ordner in dieser Variable gespeichert sein. Sie müssen den oben angegebenen Code in .bashrc so anpassen, dass die Variable SSH_AUTH_SOCK korrekt ist. Im Zweifel suchen Sie nach ‚SSH_AUTH_SOCK‘ in

man gpg-agent

um den aktuellen Code für Ihre Version/Ihr System zu finden.

Sie können überprüfen, ob Sie ein ‚pinentry‘ Programm über Ihren Paketmanager installiert haben. Eventuell müssen Sie es auch in der gpg-agent.conf <https://wiki.archlinux.org/index.php/GnuPG#pinentry>`__ einstellen. Möglicherweise müssen Sie ` gpg-agent auf die richtige TTY <https://wiki.archlinux.org/index.php/GnuPG#Configure_pinentry_to_use_the_correct_TTY>`__ einstellen.