SSH для администрирования сервера#

В этом руководстве объясняется, как подготовить SSH-сервер и клиент для использования с Nitrokey.

На 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 на сервер вас попросят ввести pin, а не кодовую фразу.

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

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

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>`__.