it-swarm.com.de

Wie liste ich Schlüssel auf, die mit ssh-add zu ssh-agent hinzugefügt wurden?

Wie und wo kann ich überprüfen, welche Schlüssel mit ssh-add Zu meinem ssh-agent Hinzugefügt wurden?

230
Patryk

Verwenden Sie die Option -l Zu ssh-add, Um sie nach Fingerabdruck aufzulisten.

$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)

Oder mit -L, Um den vollständigen Schlüssel im OpenSSH-Format zu erhalten.

$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa

Das letztere Format ist das gleiche, wie Sie es in eine ~/.ssh/authorized_keys - Datei einfügen würden.

278
gertvdijk

Überraschenderweise zeigte die MacOS-Version von ssh-add Irgendwann nicht mehr die Dateinamen wie bei der Linux-Variante. Ich habe dieses Skript geschrieben, das dasselbe für Fingerabdrücke tut, die eine entsprechende Datei in ~/.ssh/ Haben.

Ich rufe die Funktion ssh-add_wf Auf, wf = mit Datei. Die Details zur Funktion sind unten:

$ type ssh-add_wf
ssh-add_wf is a function
ssh-add_wf ()
{
    while read -r line; do
        for file in ~/.ssh/*.pub;
        do
            printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file";
        done | column -t | grep --color=auto "$line" || echo "$line";
    done < <(ssh-add -l | awk '{print $2}')
}

Beispiel

$  ssh-add_wf
 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Oben enthalten alle Schlüssel in der Ausgabe von ssh-add, Die mit einer Datei im Verzeichnis ~/.ssh/ Übereinstimmen, den Dateinamen in der Ausgabe in der 4. Spalte. Bei allen Schlüsseln, die dies nicht tun, ist diese Spalte leer. In dieser Ausgabe haben wir 3 Schlüssel, deren Dateien übereinstimmen.

Funktionsmechanik

Das Skript verwendet 2 Schleifen. Die äußere Schleife ist ein while, das die Ausgabe von ssh-add Nimmt. Diese Ausgabe enthält alle Fingerabdrücke von SSH-Schlüsseln, die in ssh-agent Geladen sind.

Die innere Schleife ist eine for Schleife, die den Inhalt aller Dateien durchläuft, die diesem Muster entsprechen, ~/.ssh/*.pub. Für jede Datei fragen wir sie mit ssh-keygen -lf <file> Ab und löschen dann die erste Spalte dieser Ausgabe:

... vor ...

4096 SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]

... nach ...

SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]

Diese Zeichenfolge wird dann zusammen mit dem Namen der Datei gedruckt:

printf "% s% s\n" "$ (ssh-keygen -lf" $ file "| awk '{$ 1 =" "} 1')" "$ file"

Am Ende der Ausführung dieser Schleife steht Folgendes:

| Spalte -t ​​| grep "$ line" || Echo "$ line"

Dadurch wird die Ausgabe so formatiert, dass sie spaltenformatiert ist (column -t).

An dieser Stelle betrachten wir diese Ausgabe für den Fingerabdruck von ssh-add Über den grep "$line". Wenn eine Übereinstimmung gefunden wird, drucken wir unsere Ausgabe printf, andernfalls wird nur der ursprüngliche Fingerabdruck von ssh-add, $line Gedruckt.

Verweise

0
slm