Existe-t-il un moyen simple d’obtenir une liste de toutes les empreintes digitales entrées dans le fichier .ssh / allowed_keys || Fichier .ssh / registered_keys2?
ssh-keygen -l -f .ssh/authorized_keys
renverra uniquement les empreintes digitales de première ligne / entrée / publickey
bidouille avec 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"
)
}
}'
mais existe-t-il un moyen plus simple ou une commande ssh que je n'ai pas trouvée?
authorized_keys
fichier, auquel les utilisateursssh-keygen
manquent. Je cherchais un moyen fiable de l’analyser, mais le mieux que je puisse trouver est couvert par cette réponse .Réponses:
Voici un autre hack utilisant plain bash sans fichiers temporaires:
Vous pouvez facilement en faire une fonction dans votre
.bashrc
:et appelez-le avec:
la source
ssh-keygen -l -f /dev/stdin
semble ne pas fonctionner sur un mac .. néanmoins non pertinent pour les serveurs, mais gnaa apple ou est-ce un "problème" BSD obtenir/dev/stdin is not a public key file.
?!/dev/stdin
n'est pas une bonne idée en général, il vaut mieux l'utiliser-
, mais pour une raison quelconque, onssh-keygen
ne le sait pas-
...local file="${1:-$HOME/.ssh/authorized_keys}"
que cela fonctionne sans aucun argument. Par défaut, le~/.ssh/authorized_keys
fichier habituel est cité et la citation est< "$file"
utilisée comme entrée de lawhile
boucle.Voici un moyen portable d'afficher toutes les empreintes clés d'un fichier donné, testé sur Mac et Linux:
Exemple d'utilisation:
la source
#!/usr/local/bin/bash
. J'ai alors appelé la fonction en ajoutant ce que la dernière ligne:fingerprint_keys [email protected]
. J'ai sauvegardé le script en lefingerprints.bash
marquant comme exécutablechmod u+x ./fingerprints.bash
. De plus, j'ai ajouté un commentaire au fichier avec le lien vers cette réponse, comme ci-dessus, vers le haut# solution from "Will" on SO http://serverfault.com/a/615892/126742
. Appelez ça comme ça./fingerprints.bash ~/.ssh/authorized_keys
.#!/usr/bin/env bash
parce que le chemin d'accèsenv
est très portable et qu'il demandeenv
d'exécuter le Bash dont il a connaissance.Un one-liner basé sur l' astuce / dev / stdin de la réponse de ℝaphink et man xargs → EXEMPLES :
la source