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?
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.
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)
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:
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:
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.
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
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.
id_rsa
est crypté avec la commande suivante: cat ~/.ssh/id_rsa | head -2
Proc-Type: 4,ENCRYPTED
, il est chiffré et vous pouvez essayer de le déchiffrer.id_rsa
original! Utilisez la commande cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
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.
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
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.
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.
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!
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.
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_profile
comme expliqué dans ce ticket Open Radar , soit l'ajout de UseKeychain
comme l'une des options d'un utilisateur ~/.ssh/config
.
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
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