Evitar que se te desconecte una sesión SSH por inactividad

RECOMENDAMOS

¿Por qué la unidad (disco) C: se llama así?

Desde que Windows se llama Windows, éste asigna una letra a cada unidad. Por defecto, a la partición donde se...

Geforce RTX 3060Ti: Se acerca el RayTracing para todos

Cuando la competencia en un mercado es fuerte, las empresas apuran sus propias cocinas para tener - o al...

Sunsetriders y porqué deberías emular máquinas de videojuegos

Emulen, emulen todo lo que puedan. Que un juego sea viejo no significa que no tenga magia. Hace unas semanas...
Juanhttp://malditonerd.com
Juan es un cordobés que desde hace algunos años se dedica a la informática y gusta de contar sus desvaríos en malditonerd.com

Encabezando el TOP-TEN de las cosas que me rompen las pelotas últimamente probablemente esté esta «Not a bug, but a feature» que han tenido a bien implementar algunas distribuciones de Linux:

Si estás mucho tiempo (inactivo) haciendo otra cosa igual o mas de importante y no enviaste –o recibiste– datos por el canal SSH, no me importa nada de lo que hubieras estado haciendo, te desconecto y te vas cagar.

Por que total, si pasó mas de media hora de inactividad, es por que realmente ya no lo necesitás, ¿Cierto?

Bueno, no. No sé en que habrán estado pensando los que idearon este sistema ¿de seguridad?, ¿anti-robo quizás?, pero al menos conmigo, se equivocaron.

Suelo tener varias sesiones SSH abiertas en simultáneo y que te tomes la atribución de cerrarme alguna sin consultarme no me hace ni un poquito de gracia. Me molestaría inclusive si me preguntaras que hacer al respecto. A vos, developer de la tal o cual distribución mas masificada te hablo: Si tengo una sesión SSH abierta, ¡Es por que la necesito, carajo!

Así que acá va, para todo aquel que putee cada tanto por este mismo problema:

Como hacer que la sesión SSH no se te desconecte sola después de un tiempo por que tuviste que atender el teléfono.

Siendo que lo único que importa es que el canal de datos envíe o reciba en el intervalo de tiempo N especificado por tu distribución, conozco tres formas distintas de evitar que la conexión se cierre y te deje afuera.

Iniciar cualquier aplicación que mueva texto en pantalla:

Top, htop, iftop, iotop, nmon, watch, al que le tengas mas bronca. Es mas, hasta un simple ping a cualquier cosa: «ping aa.com» es todo lo que necesitás para que la conexión no se cierre. Mientras haya tráfico por que algo escupe texto esporádicamente en tu pantalla, suministro eléctrico y conexión a internet de ambos lados, viento en popa y un poco de suerte, vas a seguir conectado.

Si bien este método funciona, tiene la desventaja de que si en el apuro, un día de furia te olvidaste de ejecutar algo, ya te imaginarás que pasa.

Explicarle a PuTTY o al cliente SSH de Linux que como no te querés quedar fuera, se encargue del asunto:

PuTTY tiene la capacidad de mantener la conexión viva enviando tráfico «dummy» para así evitar el engorro. Muy facilmente puede gestionar esta cuestión por vos y es tan simple como hacer click en «connection» y poner un número mayor que cero pero menor que el intervalo que te deja fuera en la sección «Seconds between keepalives«. (Un buen número, podría ser por ejemplo, 60).

(Connections > Seconds between keepalives. Explicándole a PuTTY que no te tiene que desconectar por inactividad)


Si bien este método tambien funciona, tiene la desventaja de que tenés que hacer el cambio toooooodas y cada una de las veces que iniciás sesión, o bien guardarlo en el profile «Default Settings». Si tenés además una lista gigante de direcciones almacenada en PuTTY, ir una por una haciendo este cambio es bastante molesto y sumale a eso que alguna vez vas a estar en una PC que no es tuya conectado por SSH y si te olvidaste, cagaste de nuevo.

Por otro lado, para el cliente SSH de Linux, la cosa es mucho mas fácil. Simplemente agregando a tu /etc/ssh/ssh_config la línea:

ServerAliveInterval 60

Hacer que el server SSH que escucha del otro lado se encargue de no desconectarte de prepo:

Esta es la mas eficiente de todas por lejos, por que es un cambio que se aplica una única vez y ya te queda, indistintamente de desde que PC y con que cliente te conectes.

Logueado en el servidor remoto, editás el archivo /etc/ssh/sshd_config y agregás estas dos lineas si no las tuvieras:

ClientAliveInterval 60
ClientAliveCountMax 3

Donde ClientAliveInterval es obviamente, lo mismo que te expliqué antes, pero del lado del server y ClientAliveCountMax es la cantidad de reintentos antes de que el servidor SSH decida:

No, no hay caso, ya le mandé tres keepalives de estos y del otro lado ni me respondieron nunca nada. Se le debe haber cortado internet así que lo desconecto.

12 COMENTARIOS

  1. Gustavo

    Que bien que me viene saber esto. Uso una cuenta shell gratuita para jugar un poco con PHP sin tener que configurar mi propio server y se me desconectaba siempre si lo dejaba de usar un rato (antes pensaba que era inevitable, que me sacaban a propósito por no garparles).

  2. jajajaja el día que te olvides de cerrar una sesión, y algún copado pase por tu PC y haga estragos, vas a amar la desconexión automática

    • Nooooo, cómo olvidarse de cerrar una sesión? Ctrl+Alt+L o Win+L según corresponda tiene que ser un movimiento tanto o más automatizado que la respiración o la digestión! Me extraña de su parte, DrM!

      Por suerte Debian no me cierra nada pero de solo leer tu post imagino el mal humor que me agarraría…

      Saludos,
      El Pibe de Sistemas

      • Claro, claro, en el laburo abunda el CTRL+ALT+L… y lo enseñamos a los nuevos cuando vemos un desktop sin bloquear mandándo mail a todos desde su cuenta comprometiéndose a comprar facturas al día siguiente
        Pero siempre alguno que la tiene clara sale rápido de su escritorio con la sesión iniciada… y ñácate!

      • Si existiera la posibilidad de que alguien me cague algo nada mas por amor al chiste -que no existe-, usaría CTRL+D.

        ¿Estamos hablando de Linux, se acuerdan?

        ¡Saludos!

  3. Luke

    Este tipo de posts, avivan la eterna pelea entre el chaboncito de Seguridad Informatica y el Programador Geek que esta podrido de loguearse a cada rato…

    • Debe ser por eso que lo escribí yo, que no puedo jactarme de ser ni una cosa ni la otra.

      De todas formas, lo importante es que avive algo. Si paso y no dejo huella, ¿para qué paso?

      ¡Saludos!

  4. Guido

    En Windows se solucionaría desde el Panel de Control

  5. Avrah

    Justamente ayer investigando sobre esto mismo me encontre con algo que esta en casi todas las distros, que se llama screen, esta muy bueno, porque si te desconecta podes retomar ese «screen» via ssh y seguis desde donde este. Basicamente es un terminal virtual que aunque te desconectes te permite retomar la sesion.

  6. Walkis

    Tengo una pregunta más. En mi caso yo me conecto por putty a una servidor a distancia, para descargar un paquete de 500gb.

    En fin… cuando cierro el ssh desde mi pc local el proceso de descarga se cierra. Cómo hacer para que en la pc remota se mantenga la descarga internamente. Gracias.

Dejá una respuesta

Please enter your comment!
Please enter your name here

ULTIMOS ARTICULOS

¿Por qué la unidad (disco) C: se llama así?

Desde que Windows se llama Windows, éste asigna una letra a cada unidad. Por defecto, a la partición donde se...

Geforce RTX 3060Ti: Se acerca el RayTracing para todos

Cuando la competencia en un mercado es fuerte, las empresas apuran sus propias cocinas para tener - o al menos intentar tener - las...

Sunsetriders y porqué deberías emular máquinas de videojuegos

Emulen, emulen todo lo que puedan. Que un juego sea viejo no significa que no tenga magia. Hace unas semanas me puse a revivir gran...

Thinkpad X1 Fold: la computadora del futuro, hoy

El título parece el slogan de una publicidad, y si, puede serlo. También sería el título de una nota patrocinada por Lenovo, que no nos...

Adiós Flash Player, muchas gracias por todo

Enciendo una vieja PC, me salta un cartel: "Flash Player dejará de funcionar definitivamente el 31 de Diciembre de 2020". ¿Que, ya no había cerrado...

Artículos relacionados