openssh: demander à ssh d'ajouter des clés à l'agent si nécessaire

25

Lorsque je ssh sur un serveur et que ma clé n'est pas chargée dans l'agent, je dois abandonner, puis exécuter ssh-add pour obtenir ma clé dans l'agent. J'aimerais que la commande ssh ajoute automatiquement la clé si elle n'est pas présente. Est-ce possible?

énigmatiquePhysicien
la source
Avez-vous une clé pour tous vos hôtes cibles, ou avez-vous des clés différentes avec des mots de passe différents? Utilisez-vous du mastic de Windows ou utilisez-vous un système de fenêtrage basé sur X sous Linux ou êtes-vous dans un Mac?
Otheus
J'utilise une seule clé et openssh. ssh comprend déjà la bonne clé et me demande la phrase secrète, mais après l'avoir saisie, la clé ne sera pas enregistrée dans l'agent. Ce comportement est le même sur tous les systèmes POSIX et cygwin.
enigmaticPhysicist
Est-ce que ça ressemble? stackoverflow.com/questions/3466626/…
techraf
Non, c'est différent. Je souhaite saisir le mot de passe clé à chaque arrêt de l'agent. Je voudrais juste que ssh ajoute la clé à l'agent directement au besoin, plutôt que d'avoir à utiliser ssh-add en premier.
enigmaticPhysicist

Réponses:

35

L' AddKeysToAgentoption fait ce que je veux. Je peux spécifier -o AddKeysToAgent=yessur la ligne de commande ou ajouter AddKeysToAgent yesune ligne seule dans mon .ssh/config. Soit fonctionne.

Il semble que ce soit un ajout très récent à openssh, apparaissant dans la version 7.2, datée du 28/02/2016!

http://www.openssh.com/txt/release-7.2

Merci, OpenBSD! Je vais utiliser ce un lot .

énigmatiquePhysicien
la source
.ssh / config: ligne 3: option de configuration incorrecte: AddKeysToAgent. Des pensées? Serveur Unix
trainoasis
Vérifiez votre version openssh. $ ssh -V. Il doit être supérieur ou égal à 7.2.
enigmaticPhysicist
En effet, c'était le cas, merci. Demande toujours le mot de passe après la reconnexion. Comment automatiser git pull via script par exemple si vous devez toujours saisir pass? Et je suppose que id_rsa sans mot de passe n'est pas une bonne idée ...
trainoasis
Voulez-vous dire entre les connexions ssh ou entre les connexions locales? Le mot de passe est censé être effacé entre les connexions locales.
EnigmaticPhysicist
Chaque fois que j'exécute un script localement, il devrait y avoir ssh et exécuter git pull, etc., mais bien sûr, il ne peut pas parce qu'il a besoin d'un mot de passe pour les commandes GIT (ssh fonctionne sans car pass est dans le trousseau, mais les commandes là demandent bien sûr pour pass)
trainoasis