Як встановити пакети
Для кожного комп’ютера:
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1Як увімкнути доступ для певного користувача
Для кожного користувача, який повинен мати доступ:
sudo usermod -a -G tss "$(id -nu)"або, якщо користувач не може використовувати sudo:
sudo usermod -a -G tss USERNAMEЯк ініціалізувати драйвер TPM-SSH
Виконайте це один раз на кожному комп’ютері:
tpm2_ptool initПриклад виводу:
action: Created
id: 1Як створити ключ
Спочатку додайте токен:
- Рекомендується, щоб
labelмав значенняssh, але ви можете використовувати будь-яку мітку. - Виберіть
userpin, який є паролем для ключа. Вам потрібно буде вводити цей пароль під час використання ключа. - Виберіть
sopin, який є подібним до пароля адміністратора для цього токена. Вам потрібно буде вводити цей пароль, коли потрібно скинути пароль користувача.
Я рекомендую вибрати обидва паролі за допомогою менеджера паролів.
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8kУ разі успіху ця команда не повертає жодного виводу.
Тепер ми можемо створити ключ для цього токена:
Вам потрібно використати пароль користувача, який ви використовували раніше
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256Якщо вам потрібен RSA-ключ (не рекомендується!), використовуйте --algorithm=rsa4096 замість цього. Я не рекомендую використовувати RSA-ключі коротші за 4096 біт!
Перелік потенційно підтримуваних алгоритмів (не кожен TPM підтримує кожну еліптичну криву, наприклад) див. у Які алгоритми ключів підтримує TPM2.0 / tpm2_ptool?.
У разі успіху ця команда покаже вам вивід, наприклад
action: add
private:
CKA_ID: '73982040827406721063241421723261'
public:
CKA_ID: '73982040827406721063241421723261'Як відобразити публічний ключ
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.soЯк використовувати ключ
У ~/.ssh/config додайте:
Host myserver
PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
PasswordAuthentication noПісля цього ви можете просто
ssh serverЯкщо вам потрібно використати його в SSH-команді без використання ~/.ssh/config, ви можете вказати:
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server