TPM2.0-geschützte SSH-Schlüssel-Spickzettel

Wie man die Pakete installiert

Für jeden Computer:

install_tpm2_pkcs11.sh
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1

Wie man den Zugriff für einen spezifischen Benutzer aktiviert

Als jeder Benutzer, der Zugriff haben soll:

usermod_add_tss_group.sh
sudo usermod -a -G tss "$(id -nu)"

oder, wenn der Benutzer kein sudo verwenden kann:

tpm2_ptool_init.sh
sudo usermod -a -G tss USERNAME

Wie man den TPM-SSH-Treiber initialisiert

Führen Sie dies einmal auf jedem Computer aus:

tpm2_ptool_addtoken_ecc.sh
tpm2_ptool init

Beispielausgabe:

ssh_key_display_command.sh
action: Created
id: 1

Wie man einen Schlüssel erstellt

Fügen Sie zuerst ein Token hinzu:

Ich empfehle, beide Passwörter mit einem Passwort-Manager zu wählen.

tpm2_ptool_addtoken.sh
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8k

Bei 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.sh
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256

Wenn 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

tpm2_addkey_output.txt
action: add
private:
  CKA_ID: '73982040827406721063241421723261'
public:
  CKA_ID: '73982040827406721063241421723261'

Wie man den öffentlichen Schlüssel anzeigt

ssh_key_display_command.sh
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so

Wie man den Schlüssel verwendet

Fügen Sie in ~/.ssh/config hinzu:

ssh_config_example
Host myserver
  PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
  PasswordAuthentication no

Danach können Sie einfach

ssh_example.sh
ssh server

Wenn Sie ihn in einem SSH-Befehl ohne Verwendung von ~/.ssh/config verwenden müssen, können Sie angeben:

ssh_direct_with_pkcs11.sh
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server

Verwandte Beiträge (fortgeschrittene oder gefährliche Themen)


Check out similar posts by category: Linux