web-dev-qa-db-fra.com

macOS continue à demander mon mot de passe ssh depuis ma mise à jour vers Sierra

Il se souvenait du mot de passe, mais maintenant, il me le demande à chaque fois.

J'ai lu qu'il me fallait régénérer la clé publique avec cette commande, ce que j'ai fait:

ssh-keygen -y -f id_rsa > id_rsa.pub

mais ça n'a rien arrangé.

Comment faire en sorte que macOS se souvienne de ma phrase secrète?

555
erwan

Dans la dernière version de macOS (10.12.2), cela est facile à corriger. Editez simplement votre ~/.ssh/config et activez l'option UseKeychain:

Host *
    UseKeychain yes

Il n'est pas nécessaire de changer autre chose. Maintenant, tout fonctionne comme avant les dernières mises à jour. Vous n'avez pas besoin d'ajouter de clés à ssh-agent.


Edit: Vous devrez peut-être encore entrer votre phrase secrète une fois. Si vous ne le connaissez pas, suivez ces instructions pour le révéler.

1075
Jukka Suomela

J'ai eu le même problème. Le trousseau MacOS Sierra ne cesse de demander le mot de passe. Votre id_rsa devrait être crypté avec une phrase secrète pour la sécurité. Ensuite, essayez de l'ajouter au trousseau ssh-add -K ~/.ssh/id_rsa

Si votre clé est dans un autre dossier que ~/.ssh, remplacez-le par le bon dossier.

Le trousseau connaît maintenant votre clé ssh et, espérons-le, tout fonctionne maintenant (le mien l'a fait)

176
Lars G.

Cela a résolu mon problème similaire:

/usr/bin/ssh-add -K

Cela stocke les mots de passe dans votre trousseau.

Update (merci @EasyCo): Cela fonctionne mais ne persiste pas entre les redémarrages. La solution de @ jukka-suomela sur cette page Est-ce que fonctionne entre les redémarrages. Vous pouvez trouver cette réponse ici:

https://superuser.com/a/1158050/234685

66
critikaster

Je n'avais qu'à entrer le mot de passe correct une fois et cela a commencé à fonctionner. Le problème était que je ne me souvenais pas de mon mot de passe SSH d'origine, mais je l'ai récupéré en suivant les étapes de Github:

  • Dans le Finder, recherchez l'application Keychain Access.
  • Dans Accès au trousseau, recherchez SSH.
  • Double-cliquez sur l'entrée de votre clé SSH pour ouvrir une nouvelle boîte de dialogue.
  • Boîte de dialogue d'accès au trousseauDans le coin inférieur gauche, sélectionnez Afficher le mot de passe.
  • Vous serez invité à entrer votre mot de passe administratif. Tapez-le dans la boîte de dialogue "Accès au trousseau".
  • Votre mot de passe sera révélé.
40
Olli Jaakkola

Aucune des solutions ci-dessus n’avait fonctionné après l’installation de Sierra sur El Capitan sur un nouveau MacBook Pro. Sierra par sa conception n'enregistre pas les clés SSH dans le trousseau.

Deux solutions ont fonctionné pour moi. L'une consiste à ajouter la commande ssh-add -A &> /dev/null à ~/.bash_profile. Chaque fois que vous ouvrez le terminal, cette commande sera exécutée (la partie &> /dev/null envoie à la sortie de la commande le fichier/dev/null).

Une solution plus compliquée mais légèrement plus astucieuse consiste à créer une plist avec la commande qui est exécutée à chaque démarrage du système d'exploitation, comme suggéré dans Sauvegarde de clés SSH dans le trousseau macOS Sierra . Cela implique l'utilisation de Xcode pour créer le fichier.

18
Hank Snow

Une solution consiste à ajouter les éléments suivants à votre fichier ~/.ssh/config:

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes

Extrait de: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Voir aussi: https://Apple.stackexchange.com/a/264974/3810

15
ThomasW

Ce matin, j'ai eu le même problème que vous après la mise à jour vers Sierra. Dans mon cas, le fichier id_rsa était crypté et, une fois décrypté, il fonctionnait à merveille.

  1. Vérifiez si votre fichier id_rsa est crypté avec la commande suivante: cat ~/.ssh/id_rsa | head -2
  2. Si la deuxième ligne indique Proc-Type: 4,ENCRYPTED, il est chiffré et vous pouvez essayer de le déchiffrer.
  3. Important: faites une sauvegarde de votre fichier id_rsa original! Utilisez la commande cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Décryptez votre clé privée avec openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Retirez la clé d'origine (rm ~/.ssh/id_rsa) et remplacez-la par celle déchiffrée: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Après ces étapes, vous devriez pouvoir utiliser ssh à nouveau.

7
Martijn Pieters

J'ai essayé plusieurs réponses ici, mais je rencontrais toujours des problèmes avec le passage des clés à distance (comme lors de l'utilisation de capistrano). Pour le résoudre, j'ai lu la note technique d'Apple et en ai fait mon fichier de configuration. Plus besoin de demander mon mot de passe!

https://developer.Apple.com/library/content/technotes/tn2449/_index.html

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes
3
Geek Goddess

Jukka Suomela 's answer est correct, mais si vous utilisez openssh installé à partir de homebrew, vous devez également le désinstaller à l'aide de:

brew remove openssh

... pour revenir à la valeur par défaut du système openssh, car celle de homebrew ne prend pas en charge l'entrée de configuration UseKeychain ssh.

3
Greg Dubicki

J'ai eu ce problème aussi en essayant 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: Ajoutez toutes les clés connues à l'agent SSH.

Une solution que j’ai trouvée est donc d’exécuter ssh-add avec l’option -A, qui 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 souhaitez plus jamais vous inquiéter à ce sujet, ouvrez simplement le fichier ~/.bash_profile de votre utilisateur comme suit:

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: ajoutez uniquement les clés SSH figurant dans le trousseau à l'agent.

Ainsi, alors que l'option ssh-add -A devrait fonctionner dans la plupart des cas élémentaires, j'ai récemment rencontré un problème dans lequel j'avais 6-7 boîtes Vagrant (qui utilise des clés/identités SSH pour l'accès) sur une machine au-dessus du plus commun 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. Donc, l’agent SSH a essayé l’ensemble 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 va simplement ajouter 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é plus de clés/identifiants SSH à votre agent que nécessaire - comme le montre ssh-add -l, supprimez-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 spécifiquement ajouter la clé/identité ~/.ssh/id_rsa.pub à l'agent de la manière suivante:

ssh-add ~/.ssh/id_rsa.pub

Tapez votre phrase secrète, appuyez sur Return 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é, saisissez ssh-add -l et une seule clé/identité SSH apparaît dans la liste.

Tout bon? Ouvrez maintenant votre .bash_profile:

nano ~/.bash_profile

Et ajoutez cette ligne en bas; commentez ou supprimez la version -A si vous l'avez 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é une option UseKeychain aux options de configuration SSH ouvertes et considère également ssh-add -A comme une solution.

À partir de macOS Sierra 10.12.2, Apple (je suppose) a ajouté une option UseKeychain config pour les configurations SSH. La vérification de la page de manuel (via man ssh_config) indique 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 qui voit dans la solution soit l'ajout de ssh-add -A à votre .bash_profilecomme expliqué dans ce ticket Open Radar , soit l'ajout de UseKeychain comme l'une des options d'un utilisateur ~/.ssh/config.

3
JakeGould

Vous avez besoin d'un fichier .plist ajouté à ~/Library/LaunchAgents/ pour exécuter ssh-add -A à chaque démarrage de macOS.

Il existe une seule commande qui effectue cette opération (à partir de SSH-keys-in-macOS-Sierra-keychain ), à savoir:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
1
AlecRust

J'ai essayé toutes les solutions suggérées ici, mais je n'ai pas de trousseau configuré dans mon Mac.

L'ajout de la ligne suivante en haut du fichier .ssh/config sur l'ordinateur local et l'ordinateur distant a fonctionné pour moi.

PubkeyAcceptedKeyTypes=+ssh-dss 
1
Roei Bar Aviv