Me acabo de enterar de la función ControlMaster / ControlPath de OpenSSH, que le permite utilizar una única conexión SSH para ejecutar múltiples terminales.
Como a menudo uso SSH para usar el reenvío de puertos para obtener sesiones VNC encriptadas y autenticadas, reconocí al instante que no puede agregar reenvíos de puertos a un servidor remoto para el que ya tiene una conexión establecida. Esto apesta.
Algunas veces más tarde descubrí que puede eludir esta limitación escribiendo ~ C en una sesión de terminal SSH en ejecución. Esto abre una línea de comandos que le permite agregar o eliminar reenvíos de puertos.
Mi pregunta ahora es: ¿Cómo puedo agregar reenvíos de puertos en una sesión SSH existente que está utilizando la función ControlMaster / ControlPath, sin la necesidad de tener acceso a una sesión de terminal dentro de esa sesión SSH? Necesito esto para habilitar mi script que inicia una conexión VNC tunelizada segura para que pueda agregar y luego eliminar sus reenvíos de puertos.
(Sé que podría usar un multiplexor de terminal como GNU Screen o tmux, en realidad ya lo estoy haciendo. Pero me gusta la idea de usar solo una sesión SSH por varias razones).
Respuestas:
Eso es bastante simple, en realidad. Simplemente agregue ctl_cmd
-O forward
a su comando existente, por lo tanto:se convierte en:
La
ssh
página man discute la-O ctl_cmd
opción:Esto, por supuesto, asume que has habilitado
ControlMaster yes
en tu~/ssh/config
archivo o-M
en la línea de comando.fuente