Comment et où puis-je vérifier quelles clés ont été ajoutées avec ssh-add
à mon ssh-agent
?
Utilisez le -l
option pour ssh-add
pour les répertorier par empreinte digitale.
$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)
Ou avec -L
pour obtenir la clé complète au format OpenSSH.
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa
Ce dernier format est le même que vous les mettriez dans un ~/.ssh/authorized_keys
fichier.
Étonnamment, la version MacOS de ssh-add
À un moment donné a cessé de montrer le nom du fichier comme avec la variante Linux. J'ai écrit ce script qui fait de même pour les empreintes digitales qui ont un fichier correspondant dans ~/.ssh/
.
J'appelle la fonction ssh-add_wf
, Wf = avec fichier. Les détails sur la fonction sont ci-dessous:
$ 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}')
}
$ 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
Ci-dessus, toutes les clés de la sortie de ssh-add
Qui correspondent à un fichier du répertoire ~/.ssh/
Incluront le nom du fichier dans la sortie de la 4e colonne. Toutes les clés qui ne l'ont pas auront cette colonne vide. Dans cette sortie, nous avons 3 clés dont les fichiers correspondent.
Le script utilise 2 boucles. La boucle extérieure est un while
qui prend la sortie de ssh-add
. Cette sortie correspond à toutes les empreintes digitales des clés SSH chargées dans ssh-agent
.
La boucle intérieure est une boucle for
qui passe par le contenu de tous les fichiers correspondant à ce modèle, ~/.ssh/*.pub
. Pour chaque fichier, nous l'interrogons avec ssh-keygen -lf <file>
Puis déposons la première colonne de cette sortie:
... avant ...
4096 SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]
... après ...
SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]
Cette chaîne est ensuite imprimée avec le nom du fichier:
printf "% s% s\n" "$ (ssh-keygen -lf" $ file "| awk '{$ 1 =" "} 1')" "$ file"
À la fin de l'exécution de cette boucle, voici ce qui suit:
| colonne -t | grep "$ line" || echo "$ line"
Cela formate la sortie afin qu'elle soit formatée en colonne (column -t
).
À ce stade, nous examinons cette sortie pour l'empreinte digitale de ssh-add
Via le grep "$line"
. Si une correspondance est trouvée, nous imprimons notre sortie printf
, sinon nous revenons à l'impression de l'empreinte digitale originale à partir de ssh-add
, $line
.