Шпаргалка з SSH-ключів, захищених TPM2.0

Як встановити пакети

Для кожного комп’ютера:

install_tpm2_pkcs11.sh
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1

Як увімкнути доступ для певного користувача

Для кожного користувача, який повинен мати доступ:

usermod_add_tss_group.sh
sudo usermod -a -G tss "$(id -nu)"

або, якщо користувач не може використовувати sudo:

tpm2_ptool_init.sh
sudo usermod -a -G tss USERNAME

Як ініціалізувати драйвер TPM-SSH

Виконайте це один раз на кожному комп’ютері:

tpm2_ptool_addtoken_ecc.sh
tpm2_ptool init

Приклад виводу:

ssh_key_display_command.sh
action: Created
id: 1

Як створити ключ

Спочатку додайте токен:

  • Рекомендується, щоб label мав значення ssh, але ви можете використовувати будь-яку мітку.
  • Виберіть userpin, який є паролем для ключа. Вам потрібно буде вводити цей пароль під час використання ключа.
  • Виберіть sopin, який є подібним до пароля адміністратора для цього токена. Вам потрібно буде вводити цей пароль, коли потрібно скинути пароль користувача.

Я рекомендую вибрати обидва паролі за допомогою менеджера паролів.

tpm2_ptool_addtoken.sh
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8k

У разі успіху ця команда не повертає жодного виводу.

Тепер ми можемо створити ключ для цього токена:

Вам потрібно використати пароль користувача, який ви використовували раніше

tpm2_ptool_addkey.sh
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256

Якщо вам потрібен RSA-ключ (не рекомендується!), використовуйте --algorithm=rsa4096 замість цього. Я не рекомендую використовувати RSA-ключі коротші за 4096 біт!

Перелік потенційно підтримуваних алгоритмів (не кожен TPM підтримує кожну еліптичну криву, наприклад) див. у Які алгоритми ключів підтримує TPM2.0 / tpm2_ptool?.

У разі успіху ця команда покаже вам вивід, наприклад

tpm2_addkey_output.txt
action: add
private:
  CKA_ID: '73982040827406721063241421723261'
public:
  CKA_ID: '73982040827406721063241421723261'

Як відобразити публічний ключ

ssh_key_display_command.sh
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so

Як використовувати ключ

У ~/.ssh/config додайте:

ssh_config_example
Host myserver
  PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
  PasswordAuthentication no

Після цього ви можете просто

ssh_example.sh
ssh server

Якщо вам потрібно використати його в SSH-команді без використання ~/.ssh/config, ви можете вказати:

ssh_direct_with_pkcs11.sh
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server

Пов’язані публікації


Дивіться схожі статті за категоріями: Linux