Como dice el título.
El host A actúa como un servidor (host bastión, llámalo como quieras).
Ahora, el host B realiza:
ssh -R 2222:localhost:22 usuario@A
como resultado, se genera un socket TCP en A, pero está vinculado a 2222@Bucle invertidoes decir, impedir conexiones remotas al mismo.
Cómo cambiar 127.0.0.1 a 0.0.0.0O algo más¿Más sensato?
Respuesta1
Te falta la bind_address
parte opcional de la -R
especificación. En elssh
documentación(como está vinculado pormicrosoft) escribe,
De forma predeterminada, los sockets de escucha TCP en el servidor estarán vinculados únicamente a la interfaz de bucle invertido. Esto se puede anular especificando un archivo
bind_address
. Un vacíobind_address
, o la dirección*
, indica que el socket remoto debe escuchar en todas las interfaces. La especificación de un control remotobind_address
solo será exitosa si la opción del servidorGatewayPorts
está habilitada (consultesshd_config(5)).
Estás usando la versión de tres tuplas del parámetro, pero necesitas la versión de cuatro tuplas:
-R port:host:hostport -R [bind_address]:port:host:hostport
Por lo tanto, para permitir que cualquiera se conecte al puerto de escucha en el servidor remoto, debe asegurarse de que GatewayPorts
esté habilitado en el puerto de escucha del servidor.sshd_config
yuse una variación de comando como esta:
ssh -R :2222:localhost:22 user@A
Los dos puntos iniciales ( :
) también implican un comodín de asterisco inicial que permite conexiones desde cualquier lugar. Personalmente creo que esta versión con el comodín deja más claro que lo que está escrito es intencional:
ssh -R *:2222:localhost:22 user@A