¿Hay una manera simple de obtener una lista de todas las huellas digitales ingresadas en .ssh / Authorized_keys || .ssh / Author_keys2 archivo?
ssh-keygen -l -f .ssh/authorized_keys
solo devolverá la huella digital de la primera línea / entrada / clave pública
piratear con 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"
)
}
}'
pero hay una manera más fácil o comando ssh que no encontré?

authorized_keysarchivo, en el que sessh-keygenconcentra. Busqué una forma confiable de analizarlo, pero lo mejor que pude encontrar está cubierto por esta respuesta .Respuestas:
Aquí hay otro truco usando bash simple sin archivos temporales:
Puede convertirlo fácilmente en una función en su
.bashrc:y llámalo con:
fuente
ssh-keygen -l -f /dev/stdinparece que no funciona en un mac .. sin embargo, no es relevante para servidores pero gnaa apple o es un "problema" de BSD/dev/stdin is not a public key file.?/dev/stdinno es una gran idea, en general, es mejor usar-, pero por alguna razónssh-keygenno sabe nada-...local file="${1:-$HOME/.ssh/authorized_keys}"permitir que funcione sin ningún argumento y predeterminado al~/.ssh/authorized_keysarchivo habitual y citar el< "$file"utilizado como entrada alwhilebucle.Aquí hay una forma portátil de mostrar todas las huellas digitales clave para un archivo determinado, probado en Mac y Linux:
Ejemplo de uso:
fuente
#!/usr/local/bin/bash. Entonces llamé a la función mediante la adición de esto como la última línea:fingerprint_keys $@. Guardé el script comofingerprints.bash, marcándolo ejecutable conchmod u+x ./fingerprints.bash. Además, agregué un comentario al archivo con el enlace a esta respuesta, así, cerca de la parte superior# solution from "Will" on SO http://serverfault.com/a/615892/126742. Llámalo así./fingerprints.bash ~/.ssh/authorized_keys.#!/usr/bin/env bashporque la ruta paraenves muy portátil y le indicaenvque ejecute el Bash que conoce.Una línea basada en el truco / dev / stdin de la respuesta de ℝaphink y man xargs → EJEMPLOS :
fuente