Wie man die Pakete installiert
Für jeden Computer:
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1Wie man den Zugriff für einen spezifischen Benutzer aktiviert
Als jeder Benutzer, der Zugriff haben soll:
sudo usermod -a -G tss "$(id -nu)"oder, wenn der Benutzer kein sudo verwenden kann:
sudo usermod -a -G tss USERNAMEWie man den TPM-SSH-Treiber initialisiert
Führe dies einmal auf jedem Computer aus:
tpm2_ptool initBeispielausgabe:
action: Created
id: 1Wie man einen Schlüssel erstellt
Füge zuerst ein Token hinzu:
- Für
labelwirdsshempfohlen, aber du kannst jedes beliebige Label verwenden. - Wähle einen
userpin, der das Passwort für den Schlüssel ist. Du musst dieses Passwort bei der Verwendung des Schlüssels eingeben. - Wähle einen
sopin, der wie das Administrator-Passwort für dieses Token ist. Du musst dieses Passwort eingeben, wenn du das Benutzer-Passwort zurücksetzen musst.
Ich empfehle, beide Passwörter mit einem Passwort-Manager zu wählen.
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8kBei Erfolg gibt dieser Befehl keine Ausgabe zurück.
Jetzt können wir einen Schlüssel für dieses Token erstellen:
Du musst das zuvor verwendete Benutzerpasswort verwenden
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256Wenn du einen RSA-Schlüssel benötigst (nicht empfohlen!), verwende stattdessen --algorithm=rsa4096. Ich empfehle nicht, kürzere RSA-Schlüssel als 4096 Bit zu verwenden!
Für eine Liste potenziell unterstützter Algorithmen (nicht jedes TPM unterstützt jede elliptische Kurve, z.B.), siehe Welche Schlüsselalgorithmen unterstützt TPM2.0 / tpm2_ptool?.
Bei Erfolg zeigt dieser Befehl eine Ausgabe wie
action: add
private:
CKA_ID: '73982040827406721063241421723261'
public:
CKA_ID: '73982040827406721063241421723261'Wie man den öffentlichen Schlüssel anzeigt
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.soWie man den Schlüssel verwendet
Füge in ~/.ssh/config hinzu:
Host myserver
PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
PasswordAuthentication noDanach kannst du einfach
ssh serverWenn du ihn in einem SSH-Befehl ohne Verwendung von ~/.ssh/config verwenden musst, kannst du angeben:
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server