Je dois exécuter cette commande depuis la mise à niveau vers macOS:
ssh-add -K
Corrige le problème après le redémarrage, mais je dois exécuter cette commande chaque fois que je me connecte à mon ordinateur.
Si je n'exécute pas la commande ci-dessus, mes clés ~/.ssh
sont ignorées et on me demande le mot de passe du serveur pour établir la connexion.
$ ssh-add -K
me donnessh-add: illegal option -- K
-K
. Voir la réponse de @JakeGould pour la résolution.Réponses:
À partir de macOS Sierra 10.12.2, Apple a ajouté une
ssh_config
option appeléeUseKeychain
qui permet une résolution «appropriée» du problème. Ajoutez ce qui suit dans votre~/.ssh/config
fichier:De la
ssh_config
man
page du 10.12.2:la source
IdentityFile ~/.ssh/id_rsa
est redondant et n'est pas nécessaire (quand on regarde les options par défaut). Je n'ai jamais défini cette option dans mon fichier de configuration ssh.~/.ssh/config~
est préférable car cela résout le problème aussh
niveau. Pas tout à fait sûr que le.bash_profile
mod fonctionnera pour les clients GUI utilisant ssh sans utiliser de shell.J'avais également ce problème lorsque je tentais de déployer du code avec 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 de fonctionner
ssh-add
avec l’-A
option — qui ajoute toutes les identités connues à l’agent SSH à l’aide des phrases secrètes stockées dans votre trousseau — comme ceci:Maintenant, cela fonctionne mais cela ne persistera pas lors des redémarrages. Donc, si vous ne souhaitez plus jamais vous inquiéter à ce sujet, ouvrez simplement le
~/.bash_profile
fichier de votre utilisateur comme suit:Et ajoutez cette ligne en bas:
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, bien que l’
ssh-add -A
option devrait fonctionner dans la plupart des cas élémentaires, 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 répandueid_rsa.pub
.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é toutes mes clés SSH, a échoué et je n'ai même pas pu accéder à l'invite de mot de passe.
Le problème est que nous
ssh-add -A
allons 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 indiqué,
ssh-add -l
purgez-les tous de l'agent comme suit:Ceci fait, démarrez l’agent SSH en tant que processus en arrière-plan, comme suit:
Maintenant, ça devient bizarre et je ne sais pas trop pourquoi. Dans certains cas, vous pouvez spécifiquement ajouter la
~/.ssh/id_rsa
clé / identité à l'agent de la manière suivante:Tapez votre phrase secrète, appuyez sur Returnet vous devriez être prêt à partir.
Mais dans d’autres cas, il suffit d’exécuter cela pour obtenir la clé / identité ajoutée:
Si cela fonctionne, tapez
ssh-add -l
et vous devriez voir une seule clé / identité SSH répertoriée.Tout bon? Maintenant ouvrez votre
.bash_profile
:Et ajoutez cette ligne en bas; commentez ou supprimez la
-A
version si cela est en place: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é une
UseKeychain
option aux options de configuration SSH ouvertes et envisage égalementssh-add -A
une solution.À partir de macOS Sierra 10.12.2, Apple a ajouté une
UseKeychain
option de configuration pour les configurations SSH. La vérification de la page de manuel (viaman ssh_config
) affiche les informations suivantes:Ce qui revient à Apple à voir la solution soit en ajoutant
ssh-add -A
à votre.bash_profile
comme expliqué dans ce ticket Open Radar, soit en ajoutant l’UseKeychain
une des options dans chaque utilisateur~/.ssh/config
.la source
ssh-add -K [path to key]
saisissez-la et entrez pw lorsque vous y êtes invité. Keychain stockera le mot de passe et ssh-add l'obtiendra à partir de là.UseKeychain
etAddKeysToAgent
à ajouter automatiquement vos clés à partir de votre ssh_config. Aucun script shell nécessaire. Voir la réponse @mluisbrown ci-dessous pour les informations mises à jour pour 10.12.2ssh-add -A
votre script rc si vous souhaitez que vos clés soient toujours chargées."¯\_(ツ)_/¯
Comme expliqué ici , voici la méthode recommandée depuis macOS 10.12.2 :
Ajoutez les lignes suivantes à votre
~/.ssh/config
fichier:Toute clé que vous ajoutez à ssh-agent à l'aide de la
ssh-add /path/to/your/private/key/id_rsa
commande sera automatiquement ajoutée au trousseau et devrait être chargée automatiquement au redémarrage.J'ajoute cette réponse parce que:
IdentityFile ~/.ssh/id_rsa
ligne, mais cette option n’est pas nécessaire pour le chargement automatique des clés (elle liera cette clé à la section hôte à laquelle vous l’ajoutez, ce que vous ne voudrez pas utiliser si vous utilisez des clés différentes hots différents).UseKeychain
, mais cela ne suffit pas pour conserver les clésssh-agent
après un redémarrage.la source
ssh-add -L
et il fera rapportThe agent has no identities
. Rien ne sera là jusqu'à ce que vous vous connectez. LesAddKeysToAgent
clés ne persistent pas entre les redémarrages en aucune façon!J'ai écrit un court post sur ce sujet qui pourrait vous aider.
Une solution appelle une
ssh-add -A
commande à chaque démarrage.Ajoutez simplement un
.plist
fichier avec le contenu suivant au chemin~/Library/LaunchAgents/
ou créez-en un avec l' application Lingon :la source
Depuis macOS 10.12.2, vous pouvez utiliser cette
UseKeychain
option. Lire plus ici ou regarder dansman ssh_config
.Il suffit donc de faire ce qui suit:
echo "UseKeychain yes" >> ~/.ssh/config
la source
>>
est à risque si vous entrez la commande plusieurs fois. Mieux vaut faire une édition manuelle du fichier, comme décrit par mluisbrown answer ou ChrisJF answer .J'ai trouvé que cela
ssh-add -K
me donnait " option illégale - K ". C'était parce que ssh-add était une version étrange provenant de / usr / local / bin (installé par brew?). J'ai pu ajouter la clé par utilisation spécifique de ssh-add situé dans / usr / bin:la source
J'ai déjà eu ce problème et j'ai trouvé un moyen de le contourner. Je viens de créer un fichier nommé
config
dans mon~/.ssh
dossier, dans lequel j'ai ajouté les lignes suivantes:Je ne sais pas pourquoi, mais
Host
et lesHostName
deux sont importants. Dans mon cas, si l'un d'entre eux n'était pas présent, la solution ne fonctionnait pas.Ensuite, je viens de faire un
ssh-add -K
et cela fonctionnait même après le redémarrage.la source
Si vous utilisez une version différente de ssh (par exemple, installée via homebrew), les solutions ci-dessus ne fonctionneront pas. Par exemple,
AddKeysToAgent yes
etUseKeychain yes
dans le.ssh/config
fichier ne sont pas reconnus par les versions non-Apple ssh et provoqueront une erreur. La même chose pour l' option-A
ou-K
pour lessh
client.Cela signifie que la réponse de @mluisbrown ne fonctionnera pas du tout. Vous pouvez utiliser la méthode 1 de la réponse de @JakeGould et utiliser explicitement l'
ssh-add
utilitaire macOS dans votre.bash_profile
pour ajouter toutes les clés au trousseau, à savoir:Comme mentionné dans un commentaire ci - dessus , vous devrez peut-être ajouter une clé au trousseau:
/usr/bin/ssh-add -K .ssh/github
la source
Modifier ~ / .ssh / config pour ajouter UseKeyChain à tous les hôtes suffit à mettre fin à ce cauchemar récurrent;)
Si le fichier est vide ou n’existe pas, créez et / ou ajoutez la configuration ci-dessus.
la source
J'ai mis à jour pour Mac OS X Sierra (10.12.6). Je pourrais SSH dans d'autres hôtes mais pas dans github.com.
C'est ce que je devais insérer dans ~ / .ssh / config:
Après ce changement, je pourrais utiliser github comme avant.
la source