Voy a implementar una serie de máquinas en el futuro cercano que estarán detrás de los enrutadores. No será factible configurar DNS dinámico en cada enrutador y reenvío de puertos, por lo tanto, ¿hay alguna manera de que pueda configurar estas máquinas para iniciar una conexión TCP a mi computadora y luego hacer que mi computadora inicie una conexión SSH a la computadora remota? esa conexión?
ES DECIR:
COMPUTER A OPENS TCP CONNECTION TO COMPUTER B
COMPUTER B OPENS SSH CONNECTION OVER THE EXISTING TCP CONNECTION TO COMPUTER A
COMPUTER B NOW HAS SSH CONNECTION TO COMPUTER A
¿Es esto posible? Y si es así, ¿cómo puedo hacerlo?
Respuestas:
En el conjunto
/etc/ssh/sshd
de la computadora B :Desde la computadora A :
Desde la computadora B :
Tenga en cuenta que 2222 es un número arbitrario de puerto alto que elegí. Ese puerto en la computadora B se volverá a tunelizar a través de la conexión SSH inicializada en la computadora A al puerto 22. Si tiene varias máquinas, debe usar un puerto diferente para cada máquina.
Para su caso de uso, es probable que desee ejecutar esto desde un script para que pueda convertirlo en un demonio e intentar volver a conectarse periódicamente si se cae el enlace. Probablemente desee una cuenta especial con un shell de solo
/bin/true
en la computadora B para manejar las conexiones entrantes. Luego puede configurar una sola tecla o varias teclas para cada máquina a las que se les permite "llamar a casa".En el equipo A se puede encontrar el
-n
,-N
y-T
opciones útiles para desconectarlo de entrada local (por lo que puede ejecutarse en segundo plano), no intente ejecutar cualquier comando a distancia, basta con abrir el túnel, y no crear un TTY.La mayoría de los métodos normales para generar un demonio no funcionan muy bien con la configuración de un túnel de red como este. Un problema en la conectividad de la red haría que intentara derribar el muro para atravesarlo. Un simple bucle con un sueño para esperar debería ser suficiente. Diez minutos es un buen número porque no inunda la red y registra los archivos con intentos si hay un problema (como que la Computadora B está fuera de línea) pero aún así te devuelve razonablemente rápido si la conexión se cae.
Un script como ese se puede ejecutar lanzado en el arranque
/etc/rc.local
. Su primer cambio para iniciar la sesión en la máquina empezará a unos diez minutos después de que el equipo A botas.fuente
/etc/ssh/sshd_config