44 votes

Transférer SSH à travers le tunnel SSH

Ma situation :

Me(localhost) -> Serveur A(ip:100.100.100.100) =>(serveur B(ip:192.168.25.100),server....)

Je suis capable d'accéder au serveur par SSH car il a une vraie adresse IP. si je veux me connecter au serveur b, je dois utiliser l'ip du serveur b (192.168.25.100).

exemple :

depuis mon PC :

ssh user@100.100.100.100

puis dans 100.100.100.100.100,

ssh user@192.168.25.100

Cela me permettrait d'accéder au serveur B avec ssh.

que faire si je veux me connecter directement au serveur b ? Comment puis-je le faire ?

exemple :

de mon oc :

ssh@192.168.25.100

J'ai essayé ce qui suit :

ssh -L 22:localhost:22 user@100.100.100.100

sans succès

37voto

Jeff Strunk Points 2077

Il n'est pas nécessaire d'utiliser le transfert de port ssh pour se connecter à un ordinateur interne via un proxy. Vous pouvez utiliser la fonction ssh qui consiste à exécuter une commande sur le premier serveur auquel vous vous connectez afin de vous connecter à un troisième ordinateur.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

En -t force ssh à allouer un pseudo-tty pour 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 votre clé 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 la commande -A pour transférer la connexion de l'agent d'authentification.

36voto

MadHatter Points 77602

Votre problème est de lier un listener à localhost:22 ; il y a déjà un sshd qui écoute sur cette adresse. La tunnellisation d'une connexion ssh à travers une connexion ssh est tout à fait légale, et je le fais tout le temps, mais vous devez choisir des ports inutilisés pour vos écouteurs de transfert.

Essayez

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

puis

me% ssh localhost -p 2201

Vous devriez vous retrouver sur le serveur B (sauf si quelque chose est déjà lié à me:2201, auquel cas, choisissez un autre port).

18voto

arantius Points 281

À partir d'OpenSSH 7.3 (fin 2016), la méthode la plus simple est la suivante ProxyJump cadre. Dans votre ~/.ssh/config :

Host B
  ProxyJump A

Ou sur la ligne de commande, -J B .

11voto

Tammy Lamperez Points 11

J'ai utilisé une solution différente. J'ai utilisé un ProxyCommand (ici dans ~/.ssh/config ) :

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

Ceci ne met pas en place de tunnel de port à port, mais tunnelise ssh en utilisant les stdin/out standards. Cette méthode a un inconvénient : il y a en fait trois connexions ssh à authentifier. Mais pour se connecter à l'hôte interne, il suffit de taper :

ssh myinsidehost2

...donc vous n'avez pas besoin de vous soucier de choisir une IP pour ce tunnel.

8voto

packeteer Points 81

Selon la page de manuel de ssh, ProxyCommand est la méthode correcte.

la syntaxe étant :

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X