SSH för serveradministration#

Den här guiden förklarar hur du förbereder din SSH-server och klient för användning med Nitrokey.

Nitrokey bör redan ha PGP-nycklar installerade och den lokala GnuPG-nyckelringen bör känna till nycklarna.

Förberedelser på uppdragsgivaren#

  • Kontrollera att ~/.gnupg/gpg.conf innehåller ’use-agent’

  • Lägg till ssh-stöd till gnupg-agent genom att lägga till ’enable-ssh-support’ till ~/.gnupg/gpg-agent.conf

  • Om filen ännu inte finns kan du bara skapa den.

  • Lägg till följande kod någonstans i din ~/.bashrc (för fish shell, se här)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Starta om systemet eller prova pkill gpg-agent och öppna en ny kommandorad för att kontrollera att allt är inställt.

  • Vid problem kan du prova gpg2 --card-status vid första användningen för att se till att gpg-agenten startas.

Förberedelser för servern#

Du kan generera en fil med auktoriserade nycklar genom att köra antingen

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

där

keyID

är det undernyckel-id som används för autentisering på din Nitrokey. Nitrokey måste redan vara känd i den lokala GnuPG-nyckelringen. Du kan nu lägga till den filen till en fjärrserver’s authorized_keys och när du sshar till servern kommer du’att bli tillfrågad om en pin istället för en lösenfras.

Felsökning#

Om du fortfarande blir ombedd att ange ett lösenord ska du kontrollera att

echo $SSH_AUTH_SOCK

returnerar något som ’/run/user/1000/gnupg/S.gpg-agent.ssh’ eller ’/home/username/.gnupg/.S.gpg-agent.ssh’. Tyvärr har det skett en del förändringar i GnuPG i det förflutna, vilket gör att det faktiska innehållet kan skilja sig åt mellan system och GnuPG-version. På vissa system kan det till och med finnas flera mappar i denna variabel som sparas. Du måste anpassa den ovan angivna koden i .bashrc så att variabeln SSH_AUTH_SOCK är korrekt. Om du är osäker kan du leta efter ’SSH_AUTH_SOCK’ i

man gpg-agent

för att hitta den aktuella koden för din version/det aktuella systemet.

Du kan kontrollera om du har ett ’pinentry’ program installerat via din pakethanterare. Du kan också behöva sätta det i gpg-agent.conf. Det kan hända att du måste punkta gpg-agent till rätt TTY.