TPM2.0-geschützte SSH-Schlüssel-Spickzettel
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ühren Sie dies einmal auf jedem Computer aus:
tpm2_ptool initBeispielausgabe:
action: Created
id: 1Wie man einen Schlüssel erstellt
Fügen Sie zuerst ein Token hinzu:
- Für
labelwirdsshempfohlen, aber Sie können jedes beliebige Label verwenden. - Wählen Sie einen
userpin, der das Passwort für den Schlüssel ist. Sie müssen dieses Passwort bei der Verwendung des Schlüssels eingeben. - Wählen Sie einen
sopin, der wie das Administrator-Passwort für dieses Token ist. Sie müssen dieses Passwort eingeben, wenn Sie das Benutzer-Passwort zurücksetzen müssen.
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:
Sie müssen das zuvor verwendete Benutzerpasswort verwenden
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256Wenn Sie einen RSA-Schlüssel benötigen (nicht empfohlen!), verwenden Sie 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ügen Sie in ~/.ssh/config hinzu:
Host myserver
PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
PasswordAuthentication noDanach können Sie einfach
ssh serverWenn Sie ihn in einem SSH-Befehl ohne Verwendung von ~/.ssh/config verwenden müssen, können Sie angeben:
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@serverVerwandte Beiträge (fortgeschrittene oder gefährliche Themen)
- Welche Schlüsselalgorithmen unterstützt TPM2.0 / tpm2_ptool?
- tpm2_ptool: Wie man Primaries löscht
- tpm2_ptool: Wie man ein Token löscht
- tpm2_ptool-Shell-Skript zum Erstellen eines Primary, wenn es noch nicht existiert