Czy istnieje prosty sposób na uzyskanie listy wszystkich odcisków palców wprowadzonych w .ssh / uprawnionych_kluczykach || Plik .ssh / Author_keys2?
ssh-keygen -l -f .ssh/authorized_keys
zwróci tylko odcisk palca pierwszego wiersza / wpisu / klucza publicznego
włamać się z 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"
)
}
}'
ale czy istnieje prostszy sposób lub polecenie ssh, którego nie znalazłem?
authorized_keys
pliku, w którymssh-keygen
baulks. Szukałem niezawodnego sposobu na jego przeanalizowanie, ale najlepsze, jakie mogłem wymyślić, obejmuje ta odpowiedź .Odpowiedzi:
Oto kolejny hack wykorzystujący zwykły bash bez plików tymczasowych:
Możesz łatwo ustawić tę funkcję w
.bashrc
:i nazwij to:
źródło
ssh-keygen -l -f /dev/stdin
wydaje się, że nie działa na komputerze Mac .. nie dotyczy to jednak serwerów, ale gnaa apple, czy jest to problem z BSD/dev/stdin is not a public key file.
?/dev/stdin
nie jest ogólnie świetnym pomysłem, lepiej go używać-
, ale z jakiegoś powodussh-keygen
nie wie o-
...local file="${1:-$HOME/.ssh/authorized_keys}"
pozwolić, aby działał bez żadnych argumentów i domyślnie do zwykłego~/.ssh/authorized_keys
pliku i zacytował< "$file"
użyty jako dane wejściowe dowhile
pętli.Oto przenośny sposób wyświetlania wszystkich kluczowych odcisków palców dla danego pliku, przetestowanego na komputerach Mac i Linux:
Przykładowe użycie:
źródło
#!/usr/local/bin/bash
. I wtedy nazywa się to poprzez dodanie funkcji jak w ostatnim wierszu:fingerprint_keys $@
. Zapisałem skrypt jakofingerprints.bash
, oznaczając go jako wykonywalnychmod u+x ./fingerprints.bash
. Dodatkowo dodałem komentarz do pliku z linkiem do tej odpowiedzi, podobnie jak u góry# solution from "Will" on SO http://serverfault.com/a/615892/126742
. Nazwij to tak./fingerprints.bash ~/.ssh/authorized_keys
.#!/usr/bin/env bash
ponieważ ścieżka doenv
jest bardzo przenośna i każeenv
wykonać Bash, o którym wie.One-liner oparty na sztuczce / dev / stdin z odpowiedzi ℝaphink i man xargs → PRZYKŁADY :
źródło