Como instalar os pacotes
Para cada computador:
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1Como habilitar o acesso para um usuário específico
Como cada usuário que deve ter acesso:
sudo usermod -a -G tss "$(id -nu)"ou, se o usuário não puder usar sudo:
sudo usermod -a -G tss USERNAMEComo inicializar o driver TPM-SSH
Execute isto uma vez em cada computador:
tpm2_ptool initSaída de exemplo:
action: Created
id: 1Como criar uma chave
Primeiro, adicione um token:
- Recomenda-se que o
labelsejassh, mas você pode usar qualquer rótulo que desejar. - Escolha um
userpinque será a senha da chave. Você precisará digitar essa senha ao usar a chave. - Escolha um
sopinque é como a senha de administrador daquele token. Você precisará digitar essa senha quando precisar redefinir a senha do usuário.
Recomendo escolher ambas as senhas usando um gerenciador de senhas.
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8kSe bem-sucedido, este comando não retorna nenhuma saída.
Agora podemos criar uma chave para esse token:
Você precisa usar a senha de usuário que usou antes
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256Se você precisar de uma chave RSA (não recomendado!), use --algorithm=rsa4096 em vez disso. Não recomendo usar chaves RSA menores que 4096 bits!
Para uma lista de algoritmos potencialmente suportados (nem todo TPM suporta todas as curvas elípticas, por exemplo), consulte Quais algoritmos de chave o TPM2.0 / tpm2_ptool suporta?.
Em caso de sucesso, este comando mostrará uma saída como
action: add
private:
CKA_ID: '73982040827406721063241421723261'
public:
CKA_ID: '73982040827406721063241421723261'Como exibir a chave pública
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.soComo usar a chave
Em ~/.ssh/config, adicione:
Host myserver
PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
PasswordAuthentication noDepois disso, você pode simplesmente
ssh serverSe você precisar usá-la em um comando SSH sem usar o ~/.ssh/config, você pode especificar:
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server