J'ai eu ce problème aussi lors de la tentative de déployer du code en utilisant Capistrano . Très frustrant. Je connais deux méthodes pour régler ce problème.
Méthode 1: Ajouter tous connus clés de l'agent SSH.
Donc, une solution que j'ai trouvée est de courir ssh-add
avec le -A
Cette option ajoute toutes les identités connues à l'agent SSH à l'aide des phrases secrètes stockées dans votre trousseau, comme ceci:
ssh-add -A
Maintenant, cela fonctionne, mais cela ne persistera pas après les redémarrages. Donc, si vous ne voulez plus jamais vous inquiéter à ce sujet, ouvrez simplement le ~/.bash_profile
fichier 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 seules les clés SSH qui se trouvent dans le trousseau à l'agent.
Alors que le ssh-add -A
L’option devrait fonctionner dans la plupart des cas, j’ai rencontré récemment un problème dans lequel j’avais 6-7 boîtes Vagrant (qui utilise des clés / identités SSH pour l’accès) installées sur une machine plus courante id_rsa.pub
en place.
Bref, j'ai été bloqué sur un serveur distant à cause d'un trop grand nombre d'essais infructueux basés sur les clés / identités SSH, car l'accès au serveur était basé sur un mot de passe et les clés / identités SSH étaient des clés / identités SSH. Alors l'agent SSH a essayé tout de mes clés SSH, a échoué et je ne pouvais même pas accéder à l’invite de mot de passe.
Le problème est que ssh-add -A
ajoutera arbitrairement chaque clé / identité SSH que vous avez à l'agent même si cela n'est pas nécessaire; comme dans le cas des boîtes vagabondes.
Ma solution après de nombreux essais était la suivante.
Tout d’abord, si vous avez ajouté à votre agent plus de clés / identités SSH que vous n’auriez besoin - ssh-add -l
puis purgez-les tous de l'agent comme suit:
ssh-add -D
Ceci fait, démarrez l’agent SSH en tant que processus en 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.pub
clé / identité à l'agent comme suit:
ssh-add ~/.ssh/id_rsa.pub
Tapez votre phrase secrète, appuyez sur Revenir et vous devriez être bon pour aller.
Mais dans d’autres cas, il suffit d’exécuter cela pour obtenir la clé / identité 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 bon? Maintenant, ouvrez votre .bash_profile
:
nano ~/.bash_profile
Et ajoutez cette ligne en bas; commenter ou supprimer le -A
version si vous avez cela 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.
UPDATE: Apple a maintenant ajouté un UseKeychain
option aux options de configuration SSH ouvertes et considère ssh-add -A
une solution aussi.
À partir de macOS Sierra 10.12.2, Apple (je suppose) a ajouté un UseKeychain
Option de configuration pour les configurations SSH. Vérification de 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''.
Cela revient à Apple à voir la solution soit en ajoutant ssh-add -A
à ton .bash_profile
comme expliqué dans ce billet Open Radar ou en ajoutant UseKeychain
comme l'une des options d'un utilisateur ~/.ssh/config
.