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-агента, като добавите ‚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. Може да се наложи да насочите gpg-agent към правилния TTY.