SSH за администриране на сървъри#

В това ръководство е обяснено как да подготвите SSH сървъра и клиента си за използване с Nitrokey.

В 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.