ssh -A n'active pas correctement le transfert de la connexion de l'agent d'authentification

22

J'adore ssh -A, ce qui me permet d'utiliser ma clé ssh locale lors de l'établissement d'une connexion à partir d'un serveur distant. Par exemple, je ssh -A host1.example.compuis à partir de là je peux ssh host2.example.com(ou utiliser git) et il utilise ma clé ssh de la machine d'origine, qui dans ce cas devrait être mon mac. Bien que cela ait toujours fonctionné pour moi sur Debian / Ubuntu, cela ne fonctionne pas sur mon nouveau mac (Lion).

Qu'est-ce que j'oublie ici? Comment configurer ssh pour qu'il fonctionne correctement avec -A? Ai-je besoin d'un ssh qui n'est pas celui de MacOS standard?

rfay
la source

Réponses:

33

En fait, la réponse très simple est que vous devez exécuter

ssh-add

et puis tout fonctionne.

Fondamentalement, macOS a déjà configuré ssh-agent pour vous, mais après chaque redémarrage, vous devez y ajouter vos clés. ssh-add donne à ssh-agent l'accès à vos clés pour le cycle de démarrage en cours. Vous devrez saisir le mot de passe de votre clé privée si vous en avez créé un.

rfay
la source
Cela a résolu mon dernier problème de transfert ssh après la mise à niveau vers macOS (après 5 ans, toujours une réponse utile, merci @rfay)
23tux
Cela fonctionne, mais une explication de pourquoi serait utile / aider les gens à se souvenir de cette commande.
Adam Parkin
2
@AdamParkin a ajouté un autre paragraphe expliquant.
rfay
1

Le concept derrière ssh -Asont des agents ssh. Ils s'exécutent en arrière-plan et grâce à l'utilisation de variables d'environnement, l'agent peut être localisé et automatiquement utilisé pour l'authentification lors de la connexion à d'autres machines à l'aide de ssh. Jetez un œil à la page de manuel de ssh-agent pour plus de détails.

Sous Mac OS X, l'agent ssh doit être démarré à la demande.

Pour plus d'informations, voir:

Florian Feldhaus
la source
1

Depuis OS X 10.8, vous devez effectuer cette opération une fois:

sudo touch /var/db/useLS

Et ajoutez ceci dans votre ~/.bash_profile:

if [ -f ~/.ssh/id_rsa ]; then
    ssh-add -K ~/.ssh/id_rsa 2>/dev/null
fi

Remarque: cette recette fait partie de mes scripts bédouins .

Sorin
la source
Hm, viens d'essayer ça; l'agent démarre alors, mais vous devez toujours ssh-add pour que tout fonctionne. Donc, ssh-add seul est toujours la réponse, si je comprends bien. Je suppose que je devrais l'ajouter à mon .bash_profile.
rfay
lol, que faire si ma clé privée a besoin d'une phrase secrète?
Jeffrey04