Question macOS continue à demander mon mot de passe ssh depuis que j'ai mis à jour vers Sierra


Il se souvenait de la phrase secrète, mais maintenant il me le demande à chaque fois.

J'ai lu que je devais 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 il n'a rien réparé.

Comment puis-je faire en sorte que macOS se souvienne encore de ma phrase secrète?


500
2017-09-22 09:21


origine


Je suis confronté à un comportement apparenté: auparavant, le dialogue des porte-clés apparaissait pour demander le mot de passe, maintenant je reçois simplement l'invite de la console SSH. Certains enregistrements de programmes d’aide ont probablement disparu. - Daniel B
Cela fait des années que j'ai généré mon id_rsa et que je n'ai jamais utilisé de phrase de passe et que je l'utilise pour ssh sur de nombreux serveurs. Ai-je vraiment une phrase de passe dessus, ou est-ce juste que Sierra pense que je devrais? Notez que $ cat ~ / .ssh / id_rsa | tête -2 ----- BEGIN RSA PRIVATE KEY ----- Proc-Type: 4, CRYPTÉ - Joe Murray
duplicata de apple.stackexchange.com/q/254468/62697 - Cœur
@erwan, vous semblez être actif ici. La réponse ci-dessous résout-elle votre problème? - tedder42
Est-ce que l'une des réponses corrige votre problème? Si oui, vous devriez envisager de l'accepter. - Shafik Yaghmour


Réponses:


Dans la dernière version de macOS (10.12.2), cela est facile à corriger. Éditez juste votre ~/.ssh/config et permettre la UseKeychain option:

Host *
    UseKeychain yes

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


Modifier: Vous devrez peut-être entrer votre mot de passe une fois. Si vous ne le savez pas, suivez ces instructions pour le révéler


983
2017-12-19 12:04



Cela a fonctionné pour moi. Tout en bas semble plus compliqué que ce correctif. - Br.Bill
Noter la Host * block 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 de caractères génériques à 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
Cela a fonctionné pour moi aussi, mais j'ai dû entrer 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
Si le fichier de configuration n'existe pas, créez-en un et ajoutez-le. - wynshaft
Vous n'avez pas besoin de Host * titre. Ajoutez simplement la ligne unique UseKeychain yes au sommet de votre .ssh/config si vous souhaitez que cela s'applique à tous les hôtes. - sj26


J'ai eu le même problème. Le trousseau MacOS Sierra continue à demander la phrase secrète. Votre id_rsa doit être chiffré avec un mot de passe pour la sécurité. Puis 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.

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


164
2017-09-23 12:53



Cela fonctionne mais ne semble pas persister lorsque je redémarre mon ordinateur. Quelqu'un d'autre ayant le même problème? - joshua.paling
Ouais, même problème ici. @ joshua.paling - kingkool68
@ 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 habituel. Voir cette question pour d'autres moyens d'obtenir les mêmes fonctionnalités: 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
@KonradRudolph ça marche pour moi. Appel ssh-add avec le -A L'option recherchera dans le trousseau MacOS tous les mots de passe pour les identités en question. Je crois que cela vous demandera si les mots de passe ne sont pas dans le trousseau. - Evan Pon


Cela a résolu mon problème similaire:

/usr/bin/ssh-add -K

Cela stocke les phrases secrètes 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


63
2017-10-09 14:39



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


Je n'ai eu qu'à entrer la phrase secrète correcte une fois et cela a commencé à fonctionner. Le problème était que je ne me souvenais pas de ma phrase de passe SSH originale, mais je l'ai récupérée en suivant ces pas de Github:

  • Dans le Finder, recherchez l'application Keychain Access.
  • Dans Keychain Access, recherchez SSH.
  • Double-cliquez sur l'entrée correspondant à 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 administrateur. Tapez-le dans la boîte de dialogue "Keychain Access".
  • Votre mot de passe sera révélé.

38
2017-10-29 17:16



Ne fonctionne pas Terminal dit toujours "mauvaise phrase de passe" - Jayden Lawson


Aucune des solutions ci-dessus n'a fonctionné après l'installation de Sierra sur El Capitan sur un nouveau MacBook Pro. Sierra by design ne sauvegarde 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 (le &> /dev/null part envoie la sortie de la commande au fichier / dev / null).

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


18
2017-09-27 14:40



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


Une solution consiste à ajouter ce qui suit à votre fichier ~ / .ssh / config:

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

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


13
2017-12-16 06:14



Jusqu'à présent, dans aucune des réponses, personne n'a mentionné le Bad configuration option: usekeychain erreur que je reçois avec UseKeychain (toutefois, il est en majuscule). Mais je était capable de le faire fonctionner en supprimant seulement 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 quand je suis dans le terminal et utilise la commande ssh, mais d'autres applications, comme WebStorm qui utilise leur propre terminal, ne prennent pas cette configuration avant d'avoir utilisé pour la première fois une commande ssh dans le terminal standard. alors ça marche partout, des suggestions? - santiago arizti
@WilliamTurrell Si cela arrive encore, tapez which ssh pour vous assurer que vous utilisez /usr/bin/ssh et pas une version de Fink ou MacPorts, qui serait sous quelque chose comme /usr/local/bin/ssh ou /opt/local/bin/ssh - Stefan Lasiewski


Ce matin, j'ai eu le même problème qu'après vous avoir mis à jour avec Sierra. Dans mon cas, le id_rsa le fichier était crypté et après le décryptage, il fonctionnait comme un charme.

  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échiffrez 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 le remplacer par celui décrypté: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

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


7
2017-09-22 10:58



Bien que ce soit une sorte de contournement, je ne pense pas vraiment résout le problème des OP. - Daniel B
Cela fonctionne pour moi. @DanielB, quel est le problème avec cela? - Dag Høidahl
@ DagHøidahl La clé ne sera plus chiffrée. Il peut être volé avec des droits d’utilisateur réguliers, de sorte que le cryptage est un bon moyen. - Daniel B
Cela supprime le mot de passe de la clé, ce qui explique pourquoi cela fonctionne autour du problème des OP. Mais je le déconseille. Le mot de passe est tout ce qui empêche les gens d'utiliser votre clé lors de son vol. Puisque votre clé donnera probablement accès à plusieurs systèmes, vous ne voulez pas l'affaiblir. - Martijn Heemels


J'ai eu ce problème aussi bien en essayant de déployer du code en utilisant Capistrano. Très frustrant. Voici deux méthodes que je connais pour résoudre ce problème.

Méthode 1: Ajouter tout connu les clés de l'agent SSH.

Donc, une solution que j'ai trouvée consiste à exécuter ssh-add avec le -A option-qui ajoute toutes les identités connues à l'agent SSH en utilisant les mots de passe stockés dans votre trousseau, comme ceci:

ssh-add -A

Maintenant, cela fonctionne, mais il ne persistera pas lors des redémarrages. Donc, si vous ne voulez plus jamais vous inquiéter de cela, ouvrez simplement votre compte utilisateur. ~/.bash_profile fichier comme ceci:

nano ~/.bash_profile

Et ajoutez cette ligne au bas:

ssh-add -A 2>/dev/null;

Maintenant, quand vous ouvrez une nouvelle fenêtre Terminal, tout devrait être bon!

Méthode 2: Ajouter Seules les clés SSH se trouvant dans le trousseau à l'agent.

Donc, alors que le ssh-add -A L'option devrait fonctionner dans la plupart des cas de base, j'ai rencontré récemment un problème 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 au-dessus des plus courantes id_rsa.pub en place.

En bref, j'ai fini par être exclu d'un serveur distant à cause d'un trop grand nombre d'essais échoués basés sur des 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 étaient des clés / identités SSH. Donc l'agent SSH a essayé tout 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 chaque clé / identité SSH à l'agent, même si cela n'est pas nécessaire; comme dans le cas des boîtes vagabondes.

Ma solution après beaucoup d'essais était la suivante.

Tout d’abord, si vous avez ajouté plus de clés / identités SSH à votre agent que nécessaire, comme indiqué avec ssh-add -l puis purgez-les tous de l'agent comme suit:

ssh-add -D

Avec cela, lancez l'agent SSH en tant que processus d'arrière-plan, comme ceci:

eval "$(ssh-agent -s)"

Maintenant, ça devient bizarre et je ne sais pas trop pourquoi. Dans certains cas, vous pouvez spécifiquement ajouter le ~/.ssh/id_rsa.pub clé / identité à l'agent ainsi:

ssh-add ~/.ssh/id_rsa.pub

Tapez votre phrase secrète, appuyez sur Revenir et vous devriez être bon pour y aller.

Mais dans d'autres cas, il suffit simplement d'exécuter cette opération pour obtenir la clé / l'identité ajoutée:

ssh-add -K

Si tout a fonctionné, tapez ssh-add -l et vous devriez voir une seule clé / identité SSH.

Tout bon? Maintenant ouvrez votre .bash_profile:

nano ~/.bash_profile

Et ajoutez cette ligne au bas; commenter ou supprimer le -Aversion si vous avez cela en place:

ssh-add -K 2>/dev/null;

Cela permettra à la clé / identité SSH d'être rechargée sur l'agent SSH à chaque démarrage / redémarrage.

MISE À JOUR: 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) affiche 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 à voir 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 dans un par utilisateur ~/.ssh/config.


3
2018-01-02 00:05





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

brew remove openssh

... pour revenir au système par défaut openssh, car celui de homebrew ne supporte pas UseKeychain entrée de configuration ssh.


3
2018-01-28 08:58



Si quelqu'un le veut avec des homebrews, faites un ping ici: github.com/rdp/homebrew-openssh-gssapi - rogerdpack


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

Ajout à la ligne suivante en haut .ssh/config fichier à la fois sur la machine locale et la machine distante a fonctionné pour moi.

PubkeyAcceptedKeyTypes=+ssh-dss 

1
2018-01-01 23:56