Tengo una conexión ssh a una máquina que se desconecta después de 30 minutos sin entrada del usuario. Sin embargo, si empiezo algo así top
, la conexión se mantiene viva. Como esta es la máquina de un cliente, no puedo volver a configurar el servidor SSH de esa máquina. Así que estoy buscando una manera de detectar automáticamente la inactividad y comenzar algo así top
. Una especie de "protector de pantalla" para Bash.
Sé que puedo hacer eso screen
, pero desafortunadamente screen
no está instalado y no puedo instalar el software. Entonces necesito usar lo que ofrece Bash.
Para que quede claro: estoy buscando una solución que empiezo una vez después de iniciar sesión, y luego quiero usar esa terminal, alejarme, regresar dos horas más tarde y continuar trabajando, sin escribir nada antes de alejarme. Además, no estoy buscando hacer túneles (para eso recomiendo la gran herramienta sshuttle )
¿Algunas ideas?
Respuestas:
El problema es que hay algo (generalmente un firewall o equilibrador de carga) que está eliminando las sesiones inactivas. Si configura las keepalives de sesión, las keepalives evitarán que los dispositivos de red consideren la sesión como inactiva.
Arreglo de Linux / Unix / Cygwin OpenSSH :
El arreglo más simple es habilitar las capacidades de cliente ssh; este ejemplo enviará un ssh keepalive cada 60 segundos:
Si desea habilitar esto en todas sus sesiones, colóquelo en su
/etc/ssh/ssh_config
o~/.ssh/config
:Para obtener más información, consulte la página de
ssh_config
manual.Masilla Fix :
Guarde esto en su "Configuración predeterminada" PuTTY ...
fuente
Además de la respuesta de Mike Pennigton , me gustaría informarle
ServerAliveCountMax
también.ServerAliveInterval
enviará un keepalive cada x segundos (el valor predeterminado es 0 , lo que deshabilita esta función si no se establece en otra cosa).ServerAliveCountMax
ocasiones si no se recibe respuesta. El valor predeterminado deServerAliveCountMax
es 3 (consulte la página de manual ssh_config ).Ejemplo: Si se establece
ServerAliveInterval
a 60 y la licenciaServerAliveCountMax
como es, esto significa que el mantenimiento de conexión sólo se esperará a3 * 60 = 180 seconds =
3 minutos antes de chihuahuenses.Para aumentar esto a, por ejemplo, 2 horas de intentar mantener viva la conexión, puede hacer lo siguiente:
Por comando:
Por lo tanto, debe considerar establecer
Persistente:
Para hacerlo persistente, escríbalo en
/etc/ssh/ssh_config
(se aplicará en todo el sistema) o~/.ssh/config
(se aplicará solo para el usuario):Nota
Como señaló correctamente , esto podría no ser lo que desea, dependiendo de su situación:
ServerAliveCountMax
.ServerAliveCountMax
permitirssh
que seguir tratando de restablecer la conexión.Ver también:
fuente
ServerAliveCountMax
especifica la cantidad de mensajes vivos del servidor que pueden enviarse sin recibir ningún mensaje del servidor. Si deseassh
salir después de que se congele (para poder reiniciarlo), debe configurarloServerAliveCountMax
en un número bajo . Vea la página de manual OP vinculada.Estoy usando Mobaxterm y también me he encontrado con este problema. Mobaxterm también incluye una opción para mantener vivo al cliente cuando el cliente está inactivo. Ir a
Settings -> Configuration -> SSH
. Hay una sección tituladaSSH settings
, marque la opciónSSH keepalive
. Entonces el problema debería desaparecer.fuente