Je veux mettre ssh-add /path/to/special_key
en haut d'un script. Cela fonctionne bien, mais il demande toujours la phrase secrète. C'est étrange et un peu ennuyeux, car il demande toujours la phrase secrète même lorsque ssh-add -l
la clé a déjà été ajoutée.
Existe-t-il un moyen de le dire: "ajoutez cette clé et demandez la phrase secrète si elle n'a pas déjà été ajoutée, sinon ne faites rien"?
shell-script
ssh
ssh-agent
Darren Cook
la source
la source
Réponses:
Je ne vois aucune option à ssh-add qui aide à atteindre le résultat souhaité, mais il est assez facile de contourner cela, étant donné que vous êtes concerné par une clé en particulier.
Commencez par saisir l'empreinte de votre clé spéciale:
Disons que cette empreinte digitale ressemble à 6d: 98: ed: 8c: 07: 07: fe: 57: bb: 19: 12: 89: 5a: c4: bf: 25
Ensuite, en haut de votre script, utilisez
ssh-add -l
pour vérifier si cette clé est chargée, avant de l'inviter à l'ajouter:Vous pouvez regrouper tout cela en une seule ligne si vous le souhaitez:
la source
ssh-keygen
(après tout, je ne veux pas générer de clés), en utilisant plutôt le chemin de clé:ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ssh-keygen
dans la réponse ne génère pas de clé - commessh-add -l
dans votre exemple n'ajoute rien. Les indicateurs modifient le comportement des commandes afin qu'il ne corresponde pas exactement au nom. Notez que ces versions diffèrent sur le plan fonctionnel - si la vérification par chemin et la clé à ce chemin change, votre version ne la reprendrait pas. La version dans la réponse détecterait également la clé existante, peu importe d'où elle a été chargée.Il n'y a aucun moyen direct de vérifier en utilisant simplement
ssh-add
mais vous pouvez utiliserssh-keygen
et certains scripts pour vérifier.Ce qui précède s'imprime alors
yes
si l'empreinte digitale représentée par le fichier/path/to/special_key
est présente dansssh-add -l
la sortie de.Exemple
Où le contenu de la sortie
ssh-keygen -lf /path/to/special_key
ressemble à ceci:Et nous utilisons `awk '{print $ 2}' pour sélectionner uniquement la 2ème colonne, qui contient l'empreinte digitale, c'est-à-dire:
Les références
la source
Vous pouvez avoir des raisons particulières d'utiliser
ssh-add
explicitement, mais si vous voulez juste "Je veux être invité à saisir ma phrase de passe la première fois que j'utilise la clé, mais pas après", openssh a une solution plus simple:Mettez
AddKeysToAgent yes
votre.ssh/config
dossier.la source
ssh-add -K FILE
a bien fonctionné pour moi sur Mac.Il affiche toujours les lignes "Identité ajoutée:" mais ne demande pas de phrase secrète.
Depuis la page de manuel:
la source