Transférer SSH via le tunnel SSH

30

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

tom91136
la source

Réponses:

30

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).

MadHatter soutient Monica
la source
Merci pour la réponse rapide! cela fonctionne, cependant, comment puis-je transférer toutes les connexions au lieu de seulement ssh (22)?
tom91136
1
C'est un VPN à part entière que vous recherchez, pas seulement une redirection de port. Il y a un résumé sur la façon de faire vpn-over-ssh sur bodhizazen.net/Tutorials/VPN-Over-SSH , mais cela nécessite un accès root à distance via ssh sur A. Ou vous pouvez regarder OpenVPN ou d'autres solutions VPN, mais encore une fois, vous aurez besoin du privilège sur A pour les faire fonctionner.
MadHatter prend en charge Monica
merci beaucoup, une dernière chose, et si je veux seulement me connecter à A?
tom91136
me% ssh [email protected]; n'avons-nous pas déjà couvert cela? ou voulez-vous dire "et si je veux un VPN complet à A?", auquel cas ma réponse est valable.
MadHatter prend en charge Monica
1
Pour les personnes qui souhaitent VPN sur SSH, n'ont pas d'accès root sur le serveur mais il a Python, essayez sshuttle .
André Paramés
23

Vous n'avez pas à 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]

L' -toption 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 l' -Aoption pour transférer la connexion de l'agent d'authentification.

Jeff Strunk
la source
10

J'ai utilisé une solution différente. J'ai utilisé une ProxyCommandoption (ici ~/.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.

liori
la source
1
C'est le seul type d'empilement SSH que je trouve efficace. J'ai essayé corkscrewou nc( netcat) mais aucun ne fonctionne aussi parfaitement que cela.
Phuong Nguyen
7

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
emballeur
la source
Je ne suis pas sûr que l' -Woption existait lors de la réponse à cette question. Mais avec les nouvelles versions du client ssh, je conviens que la combinaison de ProxyCommandet -West la méthode préférée. Peut-être ajouter un contexte montrant à la fois comment il peut être utilisé sur la ligne de commande ainsi qu'un exemple de section pour .ssh/config.
kasperd
Une idée où trouver les changelogs / version info qui nous indiquent quelles versions de SSH ont la -Wcommande et lesquelles n'en ont pas? Un peu de recherche sur Google n'a pas donné de réponses rapidement pour moi ...
dmh
-Wa été introduit avec OpenSSH 5.4, sorti en 2010. La réponse est donc oui @kasperd
0xC0000022L
7

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.

arantius
la source