SSH til serveradministration#

Denne vejledning forklarer, hvordan du forbereder din SSH-server og -klient til brug med Nitrokey.

Nitrokey bør allerede have PGP-nøgler installeret, og den lokale GnuPG-nøglering bør kende nøglerne.

Forberedelse på kunden#

  • Sørg for, at ~/.gnupg/gpg.conf indeholder ›use-agent‹

  • Tilføj ssh-understøttelse til gnupg-agent ved at tilføje ›enable-ssh-support‹ til ~/.gnupg/gpg-agent.conf

  • Hvis filen ikke findes endnu, kan du bare oprette den.

  • Tilføj følgende kode et sted i din ~/.bashrc (for fish shell, se her)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Du skal blot genstarte dit system eller prøve pkill gpg-agent og åbne en ny kommandolinje for at sikre dig, at alt er indstillet

  • Hvis der opstår problemer, så prøv gpg2 --card-status ved første brug for at sikre dig, at gpg-agenten bliver startet

Forberedelse til serveren#

Du kan generere en authorized_keys-fil ved at køre enten

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

hvor

keyID

er det undernøgle-id, der bruges til godkendelse på din Nitrokey. Nitrokey skal allerede være kendt af den lokale GnuPG-nøglering. Du kan nu føje denne fil til en fjernserver’s authorized_keys og når du ssh’er til serveren, bliver du bedt om en pin i stedet for en passphrase.

Fejlfinding#

Hvis du stadig bliver bedt om at angive en adgangskode, skal du sikre dig, at

echo $SSH_AUTH_SOCK

returnerer noget som ›/run/user/1000/gnupg/S.gpg-agent.ssh‹ eller ›/home/username/.gnupg/.S.gpg-agent.ssh‹. Desværre er der sket nogle ændringer i GnuPG i fortiden, så det faktiske indhold kan variere fra system og GnuPG-version til system. På nogle systemer kan der endda være flere mapper i denne variabel gemt. Du er nødt til at tilpasse den ovenfor angivne kode i .bashrc, så variablen SSH_AUTH_SOCK er korrekt. I tvivlstilfælde skal du kigge efter ›SSH_AUTH_SOCK‹ i

man gpg-agent

for at finde den aktuelle kode for din version/dit system.

Du kan kontrollere, om du har et ›pinentry‹ program installeret via din pakkehåndtering. Du skal muligvis også indstille det i gpg-agent.conf. Du skal muligvis pege gpg-agent til den korrekte TTY.