SSH voor serverbeheer#

Deze handleiding legt uit hoe u uw SSH-server en -client kunt voorbereiden voor gebruik met de Nitrokey.

De Nitrokey zou al PGP sleutels geïnstalleerd moeten hebben en de lokale GnuPG sleutelring zou de sleutels moeten kennen.

Voorbereiding op cliënt#

  • Zorg ervoor dat ~/.gnupg/gpg.conf ‘use-agent’ bevat;

  • Voeg ssh-ondersteuning toe aan gnupg-agent door ‘enable-ssh-support’ toe te voegen aan ~/.gnupg/gpg-agent.conf

  • Als het bestand nog niet bestaat, kunt u het gewoon aanmaken.

  • Voeg de volgende code ergens in je ~/.bashrc toe (voor visschelp, kijk 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
  • Start uw systeem opnieuw op of probeer pkill gpg-agent en open een nieuwe commandline om te controleren of alles is ingesteld

  • In geval van problemen, probeer gpg2 --card-status bij het eerste gebruik om er zeker van te zijn dat de gpg-agent wordt opgestart

Voorbereiding voor de server#

U kunt een authorized_keys bestand genereren door ofwel

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

waarbij

keyID

is de subsleutel id die wordt gebruikt voor authenticatie op je Nitrokey. De Nitrokey moet al bekend zijn bij de lokale GnuPG sleutelring. Je kunt nu dat bestand toevoegen aan authorized_keys van een server op afstand en wanneer je naar de server ssh’t zal je om een pin worden gevraagd in plaats van een passphrase.

Problemen oplossen#

Als u nog steeds om een wachtwoord wordt gevraagd, controleer dan of

echo $SSH_AUTH_SOCK

geeft iets terug als ‘/run/user/1000/gnupg/S.gpg-agent.ssh’ of ‘/home/gebruikersnaam/.gnupg/.S.gpg-agent.ssh’. Helaas zijn er in het verleden enkele wijzigingen geweest in GnuPG waardoor de werkelijke inhoud kan verschillen per systeem en GnuPG-versie. Op sommige systemen kunnen er zelfs meerdere mappen in deze variabele zijn opgeslagen. Je moet de hierboven gegeven code aanpassen in .bashrc zodat de variabele SSH_AUTH_SOCK correct is. In geval van twijfel zoek naar ‘SSH_AUTH_SOCK’ in

man gpg-agent

om de eigenlijke code voor uw versie/systeem te vinden.

U kunt controleren of u een ‘pinentry’ programma hebt geïnstalleerd via uw pakketbeheerder. Mogelijk moet u instellen in de gpg-agent.conf ook. Misschien moet u ` gpg-agent op de juiste TTY wijzen <https://wiki.archlinux.org/index.php/GnuPG#Configure_pinentry_to_use_the_correct_TTY>`__.