Cómo instalar los paquetes
Para cada computadora:
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1Cómo habilitar acceso para un usuario específico
Como cada usuario que debería tener acceso:
sudo usermod -a -G tss "$(id -nu)"o, si el usuario no puede usar sudo:
sudo usermod -a -G tss USERNAMECómo inicializar el driver TPM-SSH
Ejecuta esto una vez en cada computadora:
tpm2_ptool initEjemplo de salida:
action: Created
id: 1Cómo crear una clave
Primero, añade un token:
- Se recomienda que la
etiquetaseassh, pero puedes usar cualquier etiqueta que quieras. - Elige un
userpinque es la contraseña para la clave. Necesitarás introducir esta contraseña al usar la clave. - Elige un
sopinque es como la contraseña de administrador para ese token. Necesitarás introducir esta contraseña cuando necesites restablecer la contraseña del usuario.
Recomiendo elegir ambas contraseñas usando un gestor de contraseñas.
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8kSi tiene éxito, este comando no devuelve ninguna salida.
Ahora podemos crear una clave para ese token:
Necesitas usar la contraseña de usuario que usaste antes
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256Si necesitas una clave RSA (¡no recomendado!), usa --algorithm=rsa4096 en su lugar. ¡No recomiendo usar claves RSA más cortas que 4096 bits!
Para una lista de algoritmos potencialmente soportados (no todos los TPMs soportan cada curva elíptica, por ejemplo), ver ¿Qué algoritmos de clave soportan TPM2.0 / tpm2_ptool?.
Si tiene éxito, este comando te mostrará una salida como
action: add
private:
CKA_ID: '73982040827406721063241421723261'
public:
CKA_ID: '73982040827406721063241421723261'Cómo mostrar la clave pública
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.soCómo usar la clave
En ~/.ssh/config, añade:
Host myserver
PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
PasswordAuthentication noDespués de eso, simplemente puedes
ssh serverSi necesitas usarlo en un comando SSH sin usar ~/.ssh/config, puedes especificar:
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server