Gibt es eine einfache Möglichkeit, eine Liste aller Fingerabdrücke zu erhalten, die unter .ssh / authorized_keys || eingegeben wurden? .ssh / authorized_keys2 Datei?
ssh-keygen -l -f .ssh/authorized_keys
Gibt nur den Fingerabdruck der ersten Zeile / Eintrag / Veröffentlichung zurück
Hack mit awk:
awk 'BEGIN {
while (getline < ".ssh/authorized_keys") {
if ($1!~"ssh-(r|d)sa") {continue}
print "Fingerprint for "$3
system("echo " "\""$0"\"> /tmp/authorizedPublicKey.scan; \
ssh-keygen -l -f /tmp/authorizedPublicKey.scan; \
rm /tmp/authorizedPublicKey.scan"
)
}
}'
aber gibt es einen einfacheren weg oder einen ssh befehl, den ich nicht gefunden habe?
authorized_keys
Datei berücksichtigen , an dem sich diessh-keygen
Sperren befinden. Ich habe nach einem zuverlässigen Weg gesucht , es zu analysieren, aber das Beste, was ich mir einfallen lassen konnte, wird durch diese Antwort abgedeckt .Antworten:
Hier ist ein weiterer Hack mit Bash ohne temporäre Dateien:
Sie können es leicht zu einer Funktion machen in Ihrem
.bashrc
:und nenne es mit:
quelle
ssh-keygen -l -f /dev/stdin
scheint auf einem Mac nicht zu funktionieren .. trotzdem nicht relevant für Server aber gnaa apple oder handelt es sich um ein BSD "Problem" bekommen/dev/stdin is not a public key file.
?!/dev/stdin
ist im Allgemeinen keine gute Idee, es ist besser zu verwenden-
, aber aus irgendeinem Grundssh-keygen
weiß nicht über-
...local file="${1:-$HOME/.ssh/authorized_keys}"
, dass es ohne Argumente und standardmäßig mit der üblichen~/.ssh/authorized_keys
Datei funktioniert und zitiere die< "$file"
als Eingabe für diewhile
Schleife verwendeten.Hier ist eine portable Möglichkeit, alle wichtigen Fingerabdrücke für eine bestimmte Datei anzuzeigen, die auf Mac und Linux getestet wurde:
Beispiel Verwendung:
quelle
#!/usr/local/bin/bash
. Ich rief dann die Funktion durch das Hinzufügen dieser als letzte Zeile:fingerprint_keys $@
. Ich habe das Skript als gespeichertfingerprints.bash
und es als ausführbar markiertchmod u+x ./fingerprints.bash
. Außerdem habe ich der Datei einen Kommentar mit dem Link zu dieser Antwort hinzugefügt, ähnlich wie oben# solution from "Will" on SO http://serverfault.com/a/615892/126742
. Nenne es so./fingerprints.bash ~/.ssh/authorized_keys
.#!/usr/bin/env bash
da der Pfad fürenv
sehr portabel ist und angibt ,env
den Bash auszuführen, über den er Bescheid weiß.Ein Einzeiler basierend auf dem / dev / stdin- Trick aus ℝaphinks Antwort und man xargs → BEISPIELE :
quelle