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

550

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?

erwan
la source
J'éprouve un comportement lié: plus tôt, la boîte de dialogue de trousseau de clés apparaissait pour vous demander le mot de passe; L’enregistrement d’un programme d’aide est probablement parti.
Daniel B
1
Cela fait des années que j'ai généré mon id_rsa et je n'ai jamais utilisé de phrase secrète et je l'utilise pour ssh dans de nombreux serveurs. Ai-je vraiment un mot de passe ou est-ce simplement que Sierra pense que je devrais le faire? Notez que $ cat ~ / .ssh / id_rsa | head -2 ----- BEGIN RSA PRIVATE KEY ----- Type de proc: 4, chiffré
Joe Murray
Si vous utilisez Pretzo et qu'aucune de ces réponses ne résout votre problème: assurez-vous de ne pas avoir la ssh module activé dans zpretzorc. De toute façon, c’est inutile sur macOS, et s’il est activé, il vous demandera votre phrase secrète même après l’ajout de UseKeychain.
Jimothy
essaie de faire ssh -v ... pour voir s'il contient des informations de débogage utiles ...
rogerdpack

Réponses:

1066

Dans la dernière version de macOS (10.12.2), cela est facile à corriger. Il suffit de modifier votre ~/.ssh/config et activer le UseKeychain option:

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.


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

Jukka Suomela
la source
22
Cela a absolument fonctionné pour moi. Tout ce qui suit semble plus compliqué que ce correctif.
Br.Bill
76
Noter la Host * le bloc devrait (presque) toujours être placé au bas de votre ~/.ssh/config fichier. Quand ssh est à la recherche de paramètres, il utilise le premier valeur qu'il trouve. Ainsi, en mettant le bloc générique à la fin, il agit comme un ensemble de valeurs par défaut; vous pouvez remplacer les paramètres pour des hôtes spécifiques en les spécifiant plus tôt dans le fichier.
Molomby
6
Cela a également fonctionné pour moi, mais je devais saisir la phrase secrète correctement une fois. Il y a une autre réponse cela décrit comment vous pouvez voir le mot de passe si vous ne vous en souvenez pas.
FGreg
22
Si le fichier de configuration n'existe pas, en créer un et l'ajouter fonctionnera également.
wynshaft
6
Vous n'avez pas besoin du Host * titre. Il suffit d'ajouter la ligne unique UseKeychain yes au sommet de votre .ssh/config si vous souhaitez que cela s'applique à tous les hôtes.
sj26
176

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 puis remplacez par le bon dossier.

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

Lars G.
la source
25
Cela fonctionne mais semble ne pas persister lorsque je redémarre mon ordinateur. Quelqu'un d'autre a le même problème?
joshua.paling
1
Oui, même problème ici. @ joshua.paling
kingkool68
18
@ joshua.paling, kingkool68 - Apple a supprimé la possibilité de mémoriser vos clés SSH lors du redémarrage afin de se conformer au comportement OpenSSH traditionnel. Voir cette question pour d'autres moyens d'obtenir la même fonctionnalité: apple.stackexchange.com/questions/254468/…
Evan Pon
@EvanPon Mais cela ne fonctionnera pas avec des clés cryptées, n'est-ce pas?
Konrad Rudolph
2
@ KonradRudolph cela fonctionne pour moi. Appel ssh-add avec le -A L’option cherchera dans le trousseau MacOS tous les mots de passe des identités en question. Je crois que cela vous demandera si les mots de passe ne sont pas dans le trousseau.
Evan Pon
65

Cela a résolu mon problème similaire:

/usr/bin/ssh-add -K

Cela stocke les mots de passe dans votre trousseau.

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

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

critikaster
la source
3
C'est la seule chose qui fonctionne.
cryptic0
4
Je n'avais pas besoin de créer .ssh / .config avec cette solution.
Shai
Cela a fonctionné pour moi. Pas besoin de modifier le fichier hôte. Je suis sur la Sierra.
cchiera
Cela a fonctionné pour moi sur Mac OS Sierra.
Dayron Gallardo
2
Comme indiqué précédemment, cela fonctionne mais ne persiste pas entre les redémarrages. La solution de @ jukka-suomela fonctionne entre les redémarrages.
EasyCo
40

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 ma phrase secrète SSH d'origine, mais je l'ai récupéré en suivant ces é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é.
Olli Jaakkola
la source
2
Ça ne marche pas Le terminal dit toujours "mauvais mot de passe"
Jayden Lawson
18

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. On est d'ajouter la commande ssh-add -A &> /dev/null vers ~ / .bash_profile. Chaque fois que vous ouvrez le terminal, cette commande sera exécutée (le &> /dev/null partie envoie le résultat 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 Enregistrement de clés SSH dans le trousseau macOS Sierra . Cela implique l'utilisation de Xcode pour créer le fichier.

Hank Snow
la source
Cela semble être aussi la réponse officielle d’Apple - voir openradar.appspot.com/27348363
Nick Maynard
La meilleure solution jusqu'à maintenant pour moi. J'utilise Mac OSX Sierra (10.12.2).
zyc
14

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

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

Pris à partir de: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Regarde aussi: https://apple.stackexchange.com/a/264974/3810

ThomasW
la source
Jusqu’à présent, personne n’a mentionné dans la réponse Bad configuration option: usekeychain erreur je reçois avec UseKeychain (cependant, il est en majuscule). Mais je était capable de le faire fonctionner en supprimant uniquement cette ligne et en laissant AddKeysToAgent et IdentityFile (vous devez toujours entrer la phrase secrète la première fois). Ceci est avec macOS Sierra 10.12.6.
William Turrell
cela fonctionne bien lorsque je suis dans le terminal et que j'utilise la commande ssh, mais d'autres applications, telles que WebStorm qui utilisent leur propre terminal, ne prennent pas cette configuration avant que j'utilise pour la première fois une commande ssh dans le terminal standard. alors ça marche partout, des suggestions?
santiago arizti
@WilliamTurrell Si cela se produit toujours, tapez which ssh pour vous assurer que vous utilisez /usr/bin/ssh et non une version de Fink ou MacPorts, qui serait sous quelque chose comme /usr/local/bin/ssh ou /opt/local/bin/ssh
Stefan Lasiewski
7

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

  1. Vérifiez si votre id_rsa le fichier est crypté avec la commande suivante: cat ~/.ssh/id_rsa | head -2
  2. Si la deuxième ligne dit Proc-Type: 4,ENCRYPTED, il est crypté et vous pouvez essayer de le décrypter
  3. Important: faites une sauvegarde de votre original id_rsa fichier! 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-le par celui déchiffré: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

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

Martijn Pieters
la source
4
Bien que ce soit une solution de contournement, je ne pense pas que ce soit vraiment résout le problème du PO.
Daniel B
Cela fonctionne pour moi. @DanielB, quel est le problème avec cela?
Dag Høidahl
7
@ DagHøidahl La clé ne sera plus cryptée. Il peut être volé avec les droits d'utilisateur habituels, le cryptage est donc une FORTE.
Daniel B
6
Cela supprime le mot de passe de la clé, raison pour laquelle il résout le problème du PO. Mais je recommande contre cela. Le mot de passe est tout ce qui empêche les personnes d'utiliser votre clé en cas de vol. Étant donné que votre clé donnera probablement accès à plusieurs systèmes, vous ne voulez pas l'affaiblir.
Martijn Heemels
3

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.

JakeGould
la source
3

Jukka Suomela de réponse est correct, mais si vous utilisez openssh installé à partir de homebrew, vous devez également le désinstaller avec:

brew remove openssh

... pour revenir au système par défaut openssh, car celui de homebrew ne prend pas en charge UseKeychain Entrée de configuration SSH.

Greg Dubicki
la source
1
Si quelqu'un le veut avec les homebrews, envoyez-moi un ping ici: github.com/rdp/homebrew-openssh-gssapi
rogerdpack
3

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 j'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
Geek Goddess
la source
1

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

Ajout à la ligne suivante en haut .ssh/config fichier sur le local et la machine distante a travaillé pour moi.

PubkeyAcceptedKeyTypes=+ssh-dss 
Roei Bar Aviv
la source
1

Tu as besoin d'un .plist fichier ajouté à ~/Library/LaunchAgents/ courir ssh-add -A à chaque démarrage de macOS.

Il y a une seule commande qui fait cela (de Clés SSH dans macOS-Porte-clés Sierra ) lequel est:

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