SSH

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

inactive

inactive

active

inactive

active

active

inactive

This guide explains how to prepare your SSH server and client for use with the Nitrokey. For configuring PuTTY, see this guide:

На Nitrokey уже должны быть установлены ключи PGP, а локальная связка ключей GnuPG должна знать эти ключи.

Подготовка на клиента

  • Убедитесь, что ~/.gnupg/gpg.conf содержит „use-agent“

  • Добавьте поддержку ssh в gnupg-agent, добавив „enable-ssh-support“ в ~/.gnupg/gpg-agent.conf

  • Если файл еще не существует, вы можете просто создать его.

  • Добавьте следующий код куда-нибудь в ваш ~/.bashrc (для fish shell посмотрите здесь)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Просто перезагрузите систему или попробуйте pkill gpg-agent и откройте новую командную строку, чтобы убедиться, что все установлено

  • В случае возникновения проблем, пожалуйста, попробуйте gpg2 --card-status при первом использовании, чтобы убедиться, что gpg-агент запускается

Подготовка к работе с сервером

Вы можете создать файл authorized_keys, выполнив следующие действия

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

где

keyID

это идентификатор подключа, который используется для аутентификации на вашем Nitrokey. Nitrokey уже должен быть известен в локальной связке ключей GnuPG. Теперь вы можете добавить этот файл в authorized_keys удаленного сервера, и при ssh на сервер вас попросят ввести пин-код, а не кодовую фразу.

Устранение неполадок

Если вас все еще просят ввести пароль, убедитесь, что

echo $SSH_AUTH_SOCK

возвращает что-то вроде „/run/user/1000/gnupg/S.gpg-agent.ssh“ или „/home/username/.gnupg/.S.gpg-agent.ssh“. К сожалению, в прошлом в GnuPG были внесены некоторые изменения, поэтому фактическое содержимое может отличаться в зависимости от системы и версии GnuPG. На некоторых системах в этой переменной может быть сохранено даже несколько папок. Вы должны адаптировать приведенный выше код в .bashrc так, чтобы переменная SSH_AUTH_SOCK была правильной. Если вы сомневаетесь, поищите „SSH_AUTH_SOCK“ в разделе

man gpg-agent

чтобы найти фактический код для вашей версии/системы.

Вы можете проверить, установлена ли у вас программа „pinentry“ через менеджер пакетов. Вам может понадобиться ` установить его в файле gpg-agent.conf <https://wiki.archlinux.org/index.php/GnuPG#pinentry>`__. Вам может понадобиться ` указать gpg-agent на правильный TTY <https://wiki.archlinux.org/index.php/GnuPG#Configure_pinentry_to_use_the_correct_TTY>`__.