ssh -L reenvía múltiples puertos

Resuelto PascalVKooten asked hace 9 años • 14 respuestas

Actualmente estoy ejecutando un montón de:

sudo ssh -L PORT:IP:PORT root@IP

donde IP es el destino de una máquina segura y PORT representa los puertos que estoy reenviando.

Esto se debe a que uso muchas aplicaciones a las que no puedo acceder sin este reenvío. Después de realizar esto, puedo acceder a través de localhost:PORT.

El problema principal ocurrió ahora que tengo 4 de estos puertos que debo reenviar.

Mi solución es abrir 4 shells y buscar constantemente en mi historial hacia atrás para buscar exactamente qué puertos deben reenviarse, etc., y luego ejecutar este comando, uno en cada shell (tener que completar contraseñas, etc.).

Si tan solo pudiera hacer algo como:

sudo ssh -L PORT1+PORT2+PORT+3:IP:PORT+PORT2+PORT3 root@IP

entonces eso ya ayudaría mucho.

¿Hay alguna manera de hacerlo más fácil?

PascalVKooten avatar Apr 29 '15 14:04 PascalVKooten
Aceptado

La -Lopción se puede especificar varias veces dentro del mismo comando. Cada vez con diferentes puertos. Es decirssh -L localPort0:ip:remotePort0 -L localPort1:ip:remotePort1 ...

NaN avatar Apr 29 '2015 07:04 NaN

Exactamente lo que respondió NaN , especifica múltiples argumentos -L. Hago esto todo el tiempo. A continuación se muestra un ejemplo de reenvío multipuerto:

ssh remote-host -L 8822:REMOTE_IP_1:22 -L 9922:REMOTE_IP_2:22

Nota : Esto es lo mismo que -L localhost:8822:REMOTE_IP_1:22si no especifica localhost.

Ahora con esto, ya puedes (desde otra terminal) hacer:

ssh localhost -p 8822

para conectarse al REMOTE_IP_1puerto22

y de manera similar

ssh localhost -p 9922

para conectarse al REMOTE_IP_2puerto22

Por supuesto, no hay nada que le impida incluir esto en un script o automatizarlo si tiene muchos hosts/puertos diferentes para reenviar y a ciertos específicos.

jbchichoko avatar Nov 11 '2016 11:11 jbchichoko

Para las personas que reenvían múltiples puertos a través del mismo host, pueden configurar algo como esto en su ~/.ssh/config

Host all-port-forwards
  Hostname 10.122.0.3
  User username
  LocalForward PORT_1 IP:PORT_1
  LocalForward PORT_2 IP:PORT_2
  LocalForward PORT_3 IP:PORT_3
  LocalForward PORT_4 IP:PORT_4

y se convierte en una simple ssh all-port-forwardsdistancia.

RajaRaviVarma avatar Jul 05 '2019 05:07 RajaRaviVarma

Puede utilizar la siguiente función bash (simplemente agréguela a su ~/.bashrc):

function pfwd {
  for i in ${@:2}
  do
    echo Forwarding port $i
    ssh -N -L $i:localhost:$i $1 &
  done  
}

Ejemplo de uso:

pfwd hostname {6000..6009}
Yuval Atzmon avatar Apr 02 '2017 06:04 Yuval Atzmon