Solution 1 :
Votre problème est de lier un écouteur à localhost:22 ; il y a déjà un sshd qui écoute dessus. Le tunneling d'une connexion ssh via une connexion ssh est tout à fait légal, et je le fais tout le temps, mais vous devez choisir les ports inutilisés pour vos écouteurs de transfert.
Essayez
me% ssh [email protected] -L 2201:192.168.25.100:22
alors
me% ssh localhost -p 2201
Vous devriez vous retrouver sur le serveur B (à moins que quelque chose ne soit déjà lié à moi :2201, auquel cas, choisissez un autre port).
Solution 2 :
Vous n'avez pas besoin d'utiliser la redirection de port ssh pour vous connecter en ssh à un ordinateur interne via un proxy. Vous pouvez utiliser la fonctionnalité ssh pour exécuter une commande sur le premier serveur auquel vous vous connectez afin de vous connecter en ssh à un 3ème ordinateur.
ssh -t [email protected] ssh [email protected]
Le -t
force ssh à allouer un pseudo-tty afin que vous puissiez exécuter une commande interactive.
Cela peut également fonctionner avec les clés ssh. Si vous avez votre clé privée et publique sur la machine A et votre clé publique dans les fichiers de clés autorisées sur les machines B et C, alors vous pouvez utiliser le -A
option pour transférer la connexion de l'agent d'authentification.
Solution 3 :
Depuis OpenSSH 7.3 (fin 2016), le moyen le plus simple est le paramètre ProxyJump. Dans votre ~/.ssh/config
:
Host B
ProxyJump A
Ou sur la ligne de commande, , -J B
.
Solution 4 :
J'ai utilisé une autre solution. J'ai utilisé un ProxyCommand
option (ici en ~/.ssh/config
):
Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i
Cela ne configure aucun tunnel de port à port, mais crée un tunnel ssh en utilisant la norme stdin/out. Cette méthode présente l'inconvénient qu'il y a en fait trois connexions ssh à authentifier. Mais pour vous connecter à l'hôte interne, il vous suffit de taper :
ssh myinsidehost2
... vous n'avez donc pas à vous soucier de choisir une adresse IP pour ce tunnel.
Solution 5 :
selon la page de manuel ssh, ProxyCommand est la bonne méthode
la syntaxe étant :
ProxyCommand ssh -W %h:%p [email protected] 2> /dev/null