
Vino de esta pregunta:¿Qué es el reenvío de puertos ssh y cuál es la diferencia entre el reenvío de puertos ssh local y remoto?, estoy confundido acerca de este uso:
ssh -L 123:farawayhost:456 remotehost
ssh -L sourcePort:forwardToHost:onPort connectToHost
significa: conectarse con ssh aconnectToHost
y reenviar todos los intentos de conexión allocalsourcePort
al puertoonPort
de la máquina llamadoforwardToHost
, al que se puede acceder desde laconnectToHost
máquina.
¿Qué significa "..., quepuede ser alcanzadode la connectToHost
máquina." ¿Qué quiere decir exactamente?
Si entendí correctamente, ssh -L 123:localhost:456 remotehost
es un caso específico para el comando anterior, donde ambos farawayhost
y remotehost
están en la misma máquina.
Entonces, ¿cuándo farawayhost
están y remotehost
no están en la misma máquina, cómo funciona? ¿Significa que debo iniciar sesión remotehost
primero y luego farawayhost
?
Respuesta1
No sé por qué me confundí al principio, tal vez porque la respuesta original no es lo suficientemente clara, pero luego lo descubrí de repente.
Supongamos que tengo 2 máquinas, cuyas IP públicas son 1.2.3.4
y 2.3.4.5
.
El uso sería: , generará una nueva línea, solicitando una contraseña de .ssh -L 10283:1.2.3.4:8000 [email protected] -N
username
2.3.4.5
cuando se autentica exitosamente, ssh
no iniciará sesión porque -N
se especifica, pero se realizó la conexión. Entonces cualquier dato enviado alocalEl puerto 10283
primero se enviará a 2.3.4.5
través de ssh
(puerto 22
), luego 2.3.4.5
enviará los datos al 1.2.3.4
puerto8000.
Ahora déjame crear un archivo html echo hello > index.html
y ejecutar un servidor http 1.2.3.4
con python -m http.server
.
Y luego escribo localhost:10283
en mi PC local.
PC local:
En 1.2.3.4
: