He analizado muchas preguntas similares sobre esto, pero no he encontrado nada para resolver mi problema.
Me gustaría poder abrir una conexión ssh al servidor de mi universidad y mantener la conexión abierta en segundo plano. Lo que estoy haciendo es ingresar en el servidor uni y ejecutar un script, luego scp un archivo desde allí a mi control remoto, como:
$ssh [email protected] "./bin/script"
[email protected]'s password:
$scp [email protected]:~/some_file.txt .
[email protected]'s password:
Realizo esta secuencia de comandos una tonelada, y eventualmente mi conexión se rechaza porque la universidad lo confunde con software malicioso. Entonces, lo que me gustaría poder hacer es abrir la conexión ssh una vez, luego mantenerla abierta para que pueda ejecutar continuamente el script en el servidor remoto. No quiero abrir la conexión ssh en otro terminal, ya que es muy molesto tener dos terminales abiertos y constantemente alt + tabing al incorrecto. Seguramente debe haber una manera de hacer esto, realmente agradecería algo de ayuda.
ssh puede reutilizar las conexiones existentes.
Aquí hay una cita de una respuesta de chepner a esto pregunta similar sobre Stack Overflow :
Si abre la primera conexión con
-M
:ssh -M $REMOTEHOST
las conexiones posteriores a
$REMOTEHOST
se "superpondrán" en la conexión establecida por el maestrossh
. Lo más notable es que no se requiere autenticación adicional. Consulteman ssh_config
en "ControlMaster" para obtener más detalles. Use-S
para especificar la ruta al socket compartido; No estoy seguro de cuál es el valor predeterminado, porque configuro el uso compartido de conexiones utilizando el archivo de configuración.En mi archivo
.ssh/config
, tengo las siguientes líneas:Host * ControlMaster auto ControlPath ~/.ssh/ssh_mux_%h_%p_%r
De esta manera, no tengo que recordar usar
-M
o-S
;ssh
determina si ya existe una conexión para compartir para la combinación Host/puerto/nombre de usuario y la usa si es posible.