OpenSSH en Windows siempre vincula los sockets utilizados para el reenvío remoto a LOOPBACK

OpenSSH en Windows siempre vincula los sockets utilizados para el reenvío remoto a LOOPBACK

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_addressparte opcional de la -Respecificación. En elsshdocumentació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ío bind_address, o la dirección *, indica que el socket remoto debe escuchar en todas las interfaces. La especificación de un control remoto bind_addresssolo será exitosa si la opción del servidor GatewayPortsestá 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 GatewayPortsesté 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

información relacionada