SSH ForwardAgent plusieurs sauts

15

Je cherchais une solution au problème suivant depuis 2 heures sans succès.

Développement:

J'utilise l'authentification publickey pour me connecter à mes serveurs. J'utilise le transfert d'agent ssh afin de ne pas avoir à gérer les clés publiques / privées.

Disons que j'ai des serveurs A, B and C .

Cela fonctionne très bien si je me connecte depuis LOCAL ---> A ---> B .

Cela fonctionne aussi très bien si je le fais LOCAL ---> A ---> C .

Maintenant, si j'essaye LOCAL ---> A ---> B ---> C, SSH ne peut pas se connecter depuisB to C .

À noter: je me connecte au serveur A en tant que liquidité, tandis que je me connecte au serveur B en tant que root. La connexion au serveur B en tant que liquidité résout le problème, mais ce n'est pas une option pour moi.

Selon la recommandation d'un utilisateur, j'utilise ssh -A chaque fois pour m'assurer que le transfert d'agent est activé.

J'ai trouvé une question similaire, sans réponse ici: est-il possible de chaîner le transfert d'agent ssh via plusieurs sauts?

Selon @Zoredache ici: /server//a/561576/45671 J'ai juste besoin d'ajuster la configuration de mon client sur chaque système intermédiaire. Ce que je crois avoir fait.

liquidité
la source
Pensez à utiliser le ProxyCommandsaut (comme expliqué ici ) au lieu de transférer l'agent SSH. Pour votre approche, vous devrez faire confiance à toutes les machines de la chaîne car elles peuvent (ab) utiliser vos clés privées. J'aime également beaucoup l'approche ProxyCommand car la vérification des hôtes connus est effectuée localement, et de plus, vous pouvez configurer la chaîne dans votre configuration SSH afin que vous puissiez utiliser une seule commande pour vous connecter à C.
gertvdijk
Je ne peux malheureusement pas utiliser de proxyCommand. Malgré les considérations de sécurité, j'ai vraiment besoin d'utiliser forwardAgent.
liquidité
@liquidity puis-je vous demander pourquoi ne voulez-vous pas utiliser proxyCommand? J'ai le même problème et si je comprends bien, proxyCommand est plus sécurisé. Je pense donc à laquelle utiliser ..
grep

Réponses:

13

Pour que le transfert d'agent fonctionne sur plusieurs tronçons, il vous suffit d'ajuster la configuration de votre client sur chaque système intermédiaire afin que le transfert d'agent.

Cela pourrait être aussi simple que de vous assurer que /etc/ssh/ssh_configcela est configuré. Mais si vous avez des ~/.ssh/configconfigurations par client, vous devrez peut-être également ajuster ces paramètres.

Host *
    ForwardAgent yes

Vous pouvez voir si le transfert d'agent s'est produit ou s'il y a eu une erreur si vous ajoutez simplement l' -voption.

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

Vérifiez également que vous disposez d'un ensemble de variables d'environnement valide.

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"
Zoredache
la source
4
Il vaut la peine de mentionner le drapeau -A à ssh comme une alternative rapide et sale à l'option ssh_config ou ~ .ssh / config. -A [e] permet le transfert de la connexion de l'agent d'authentification.
dmourati
1
À chaque étape, vous pouvez utiliser ssh-add -l pour répertorier les clés auxquelles ssh pense pouvoir accéder via votre agent. Assurez-vous de le transmettre à chaque connexion!
MikeyB
Merci! Notez également que si tout est fait correctement, vous n'aurez pas à démarrer manuellement l'agent ssh sur le dernier serveur. Il démarrera automatiquement si vous voyez la ligne Requesting authentication agent forwarding.dans votre sortie de débogage. Si vous avez essayé via .bash_profilede démarrer ssh-agent, supprimez-le de là, sinon votre agent redémarrera sans aucune identité.
2upmedia