web-dev-qa-db-fra.com

Transférer SSH via le tunnel SSH

Ma situation :

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

je suis capable de SSH dans le serveur car il a une vraie ip si je veux ensuite me connecter au serveur b, je serais le serveur b avec son ip (192.168.25.100)

exemple:

depuis mon pc:

ssh [email protected]

puis en 100.100.100.100,

ssh [email protected]

cela m'amènerait au serveur B avec ssh

que faire si je veux me connecter directement au serveur b? Comment puis je faire ça?

exemple:

de mon oc:

[email protected]

j'ai essayé ce qui suit:

ssh -L 22:localhost:22 [email protected]

sans succès

30
tom91136

Votre problème est de lier un auditeur à localhost: 22; il y a déjà une écoute sshd à ce sujet. Le tunneling d'une connexion ssh via une connexion ssh est complètement légal, et je le fais tout le temps, mais vous devez choisir des ports inutilisés pour vos auditeurs de transfert.

Essayer

me% ssh [email protected] -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 m'est déjà lié: 2201, auquel cas, choisissez un autre port).

31
MadHatter

Vous n'avez pas besoin d'utiliser la redirection de port ssh vers ssh dans un ordinateur interne via un proxy. Vous pouvez utiliser la fonction ssh d'exécuter une commande sur le premier serveur auquel vous vous connectez afin de ssh dans un 3ème ordinateur.

ssh -t [email protected] ssh [email protected]

Le -t option 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 publique sur la machine A et votre clé publique dans les fichiers de clés autorisés sur les machines B et C, vous pouvez utiliser le -A option pour transférer la connexion de l'agent d'authentification.

23
Jeff Strunk

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

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

Cela ne configure aucun tunnel de port à port, mais tunnelise ssh en utilisant stdin/out standard. Cette méthode présente l'inconvénient qu'il existe en réalité 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.

11
liori

Depuis OpenSSH 7.3 (fin 2016), le moyen le plus simple est le paramètre ProxyJump . Dans ton ~/.ssh/config:

Host B
  ProxyJump A

Ou sur la ligne de commande, -J B.

9
arantius

selon la page de manuel ssh, ProxyCommand est la bonne méthode

la syntaxe étant:

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

Bien que ProxyJump ait déjà été mentionné, je trouve qu'il est beaucoup plus facile d'utiliser "jump Host" (-J) argument de ligne de commande:

Une fois que vous savez ce qu'il fait, la syntaxe est assez simple: ssh -J [email protected] [email protected]

0
Jean Spector