J'ai également rencontré ce problème lorsque j'ai tenté de déployer du code à l'aide de l'outil Capistrano . C'est très frustrant. Voici deux méthodes que je connais pour résoudre ce problème.
Méthode 1 : Ajouter tous connus à l'agent SSH.
Une solution que j'ai trouvée est de lancer ssh-add
con el -A
qui ajoute toutes les identités connues à l'agent SSH en utilisant toutes les phrases de passe stockées dans votre trousseau comme ceci :
ssh-add -A
Maintenant cela fonctionne mais ne persiste pas à travers les redémarrages. Donc, si vous voulez ne plus jamais vous soucier de cela, ouvrez simplement le dossier de votre utilisateur ~/.bash_profile
comme ceci :
nano ~/.bash_profile
Et ajoutez cette ligne en bas :
ssh-add -A 2>/dev/null;
Maintenant, lorsque vous ouvrez une nouvelle fenêtre de Terminal, tout devrait être bon !
Méthode 2 : Ajouter seulement les clés SSH qui sont dans le trousseau de clés à l'agent.
Ainsi, alors que le ssh-add -A
devrait fonctionner pour la plupart des cas de base, j'ai rencontré un problème récemment où j'avais 6-7 boîtes Vagrant (qui utilisent des clés/identités SSH pour l'accès) installées sur une machine en plus de l'option plus commune id_rsa.pub
en place.
Pour faire court, j'ai fini par être verrouillé sur un serveur distant en raison d'un trop grand nombre d'essais infructueux basés sur les clés/identités SSH, puisque l'accès au serveur était basé sur un mot de passe et que les clés/identités SSH sont des clés/identités SSH. L'agent SSH a donc essayé tous de mes clés SSH, a échoué et je n'ai même pas pu accéder à l'invite du mot de passe.
Le problème est que ssh-add -A
ajoutera arbitrairement toutes les clés/identités SSH dont vous disposez à l'agent, même si cela n'est pas nécessaire, comme dans le cas des boîtes Vagrant.
Après de nombreux essais, ma solution a été la suivante.
Tout d'abord, si le nombre de clés/identités SSH ajoutées à votre agent est supérieur à vos besoins, comme le montre l'exemple suivant ssh-add -l
puis les purger tous de l'agent comme ceci :
ssh-add -D
Une fois cela fait, démarrez l'agent SSH en tant que processus d'arrière-plan comme suit :
eval "$(ssh-agent -s)"
Maintenant, ça devient bizarre et je ne sais pas trop pourquoi. Dans certains cas, vous pouvez ajouter spécifiquement le ~/.ssh/id_rsa
clé/identité à l'agent comme suit :
ssh-add ~/.ssh/id_rsa
Tapez votre phrase de passe, appuyez sur Return et vous devriez être prêt à partir.
Mais dans d'autres cas, il suffit de l'exécuter pour que la clé/identité soit ajoutée :
ssh-add -K
Si tout cela a fonctionné, tapez ssh-add -l
et vous devriez voir une seule clé/identité SSH listée.
Tout va bien ? Maintenant, ouvrez votre .bash_profile
:
nano ~/.bash_profile
Et ajoutez cette ligne au bas de l'écran ; commentez ou supprimez la ligne -A
si vous l'avez mis en place :
ssh-add -K 2>/dev/null;
Cela permettra à la clé/identité SSH d'être rechargée dans l'agent SSH à chaque démarrage/redémarrage.
MISE À JOUR : Apple a maintenant ajouté une UseKeychain
aux options de configuration de SSH ouvert et considère que ssh-add -A
une solution également.
À partir de MacOS Sierra 10.12.2, Apple a ajouté une UseKeychain
option de configuration pour les configurations SSH. En consultant la page de manuel (via man ssh_config
) montre les informations suivantes :
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored
into the keychain once it has been verified to be correct. The
argument must be ``yes'' or ``no''. The default is ``no''.
Ce qui revient à dire qu'Apple considère que la solution consiste à ajouter ssh-add -A
à votre .bash_profile
comme expliqué dans ce ticket Open Radar ou en ajoutant UseKeychain
comme l'une des options d'un programme par utilisateur ~/.ssh/config
.
1 votes
$ ssh-add -K
me donnessh-add: illegal option -- K
2 votes
Vous devrez entrer le chemin de la clé privée après
-K
. Voir la réponse de @JakeGould pour la résolution.0 votes
La mise à jour 10.12.2 a éliminé certaines demandes inutiles de mot de passe de serveur pour moi. Vous n'avez peut-être plus besoin d'exécuter la commande ssh-add -K.
1 votes
Voir aussi apple.stackexchange.com/questions/48502/
0 votes
@modius Assurez-vous que vous exécutez la bonne version de
ssh-add
: Il devrait être/usr/bin/ssh-add
et non pas quelque chose d'installé par homebrew, conda, etc.