> Faqs > Mantener las conexiones SSH activas

Mantener las conexiones SSH activas

Hay una cosa que me molesta mucho de los accesos SSH y que no sé si se puede arreglar, o quizás dependa del servidor con el que me conecto.

Resulta que si tengo un terminal con una conexión ssh abierta, al cabo de unos minutos simplemente se cierra y me echa para afuera. Entonces tengo que volverme a conectar y entrar en el servidor de nuevo, con lo que a veces se pierden estados de mi servidor, como la carpeta donde estaba situado.

Quería saber ¿hay alguna manera de mantener las conexiones ssh activas?, de modo que siguan en funcionamiento aunque se pasen esos minutos.

Gracias

Respuestas

Esto lo consigues configurar en un archivo llamado "config" que está en la carpeta .ssh de tu usuario. Esa es una carpeta oculta, por lo que igual no la ves con el típico explorador de ventanas y tienes que acceder a ella mediante la línea de comandos.

La carpeta de tu usuario es la que se crea en el sistema operativo, de donde cuelgan otras carpetas como la de descargas, documentos, etc. La ruta del archivo de configuración para conseguir esas conexiones "vivas" por tanto sería:

~/.ssh/config

Existe otra ruta posible para configurar este asunto, directamente en el archivo ssh_config, lo que valdría para todos los usuarios del ordenador. Puede que dependa del sistema operativo la ruta de ese archivo, pero en principio sería:

/etc/ssh/ssh_config

Alguno de esos dos archivos lo tienes que editar y al principio le puedes colocar estas variables de configuración:

ServerAliveInterval 120
ServerAliveCountMax 3

Esto hace que el cliente de ssh envíe una señal al servidor, vacía pero una señal, que se repite cada 120 segundos. De ese modo la conexión no te hace un timeout y no se cierra. Eso en lo que respecta al ServerAliveInterval. Luego la configuración ServerAliveCountMax es el número de reintentos que intentará mantenerla viva, pero si falla porque el servidor no le responda, pasados ese número de intentos, el cliente simplemente dará por cerrada la conexión.

Vamos a suponer que intenta hacer un o de los intentos del ServerAliveCountMax. Si el servidor no responde, entonces espera 120 segundos para hacer el segundo intento. Si no responde, espera 120 segundos más y si no responde a la tercera, es que da por perdida la conexión.

No tienen por qué ser esos valores específicos, claro que tú lo puedes configurar a tu gusto o necesidades. Igual un servidor en concreto 120 segundos es mucho tiempo de espera entre señales y te cuelga la conexión antes, en cuyo caso podrías probar a bajar el ServerAliveInterval por ejemplo para que mande señales cada 60 segundos para evitar el posible timeout.

Borja
325 6 27 17