SSH dla administracji serwerem#

Ten przewodnik wyjaśnia, jak przygotować serwer i klienta SSH do użycia z Nitrokey.

Nitrokey powinien mieć już zainstalowane klucze PGP, a lokalny pierścień kluczy GnuPG powinien znać te klucze.

Przygotowanie do pracy z klientem#

  • Upewnij się, że ~/.gnupg/gpg.conf zawiera «use-agent»

  • Dodaj obsługę ssh do gnupg-agenta, dodając «enable-ssh-support» do ~/.gnupg/gpg-agent.conf

  • Jeśli plik jeszcze nie istnieje, można go po prostu utworzyć.

  • Dodaj następujący kod gdzieś do swojego ~/.bashrc (dla rybiej łuski, spójrz ` tutaj <https://support.nitrokey.com/t/ssh-auth-with-fish-instead-of-bash/2206>`__)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Po prostu zrestartuj system lub spróbuj pkill gpg-agent i otwórz nową linię poleceń, aby upewnić się, że wszystko jest ustawione

  • W przypadku problemów, proszę spróbować gpg2 --card-status przy pierwszym użyciu, aby upewnić się, że gpg-agent zostanie uruchomiony.

Przygotowanie do pracy na serwerze#

Plik authorized_keys można wygenerować, uruchamiając opcję

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

gdzie

keyID

jest identyfikatorem klucza podrzędnego używanego do uwierzytelniania na Nitrokey. Nitrokey musi być już znany w lokalnym kluczu GnuPG. Możesz teraz dodać ten plik do authorized_keys zdalnego serwera’i kiedy ssh do serwera zostaniesz poproszony o pin zamiast frazy hasła.

Rozwiązywanie problemów#

Jeśli nadal jesteś proszony o podanie hasła, upewnij się, że

echo $SSH_AUTH_SOCK

zwraca coś w rodzaju «/run/user/1000/gnupg/S.gpg-agent.ssh» lub «/home/username/.gnupg/.S.gpg-agent.ssh». Niestety, w przeszłości w GnuPG wprowadzono pewne zmiany, tak że rzeczywista zawartość może się różnić w zależności od systemu i wersji GnuPG. W niektórych systemach w tej zmiennej może być zapisanych nawet kilka folderów. Musisz dostosować powyższy kod w .bashrc tak, aby zmienna SSH_AUTH_SOCK była poprawna. W razie wątpliwości poszukaj «SSH_AUTH_SOCK» w

man gpg-agent

aby znaleźć kod właściwy dla swojej wersji/systemu.

Możesz sprawdzić, czy masz «pinentry» program zainstalowany za pośrednictwem menedżera pakietów. Może być konieczne ` ustawienie go w gpg-agent.conf <https://wiki.archlinux.org/index.php/GnuPG#pinentry>`__ również. Może być konieczne ` wskazanie gpg-agentowi właściwego TTY <https://wiki.archlinux.org/index.php/GnuPG#Configure_pinentry_to_use_the_correct_TTY>`__.