Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ ModelArts/ Preguntas frecuentes/ Notebook (Nueva Versión)/ Fallas en el acceso al entorno de desarrollo con VS Code/ ¿Qué hago para una conexión de VS Code desconectada automáticamente si no se realiza ninguna operación durante mucho tiempo?
Actualización más reciente 2023-10-09 GMT+08:00

¿Qué hago para una conexión de VS Code desconectada automáticamente si no se realiza ninguna operación durante mucho tiempo?

Síntoma

Después de establecer una conexión de SSH a través del VS Code, no se realiza ninguna operación durante mucho tiempo y la ventana se mantiene abierta. Cuando se utiliza de nuevo la conexión, se encuentra que la conexión está desconectada y no se muestra ningún mensaje de error.

De acuerdo con los logs de VS Code Remote-SSH, la conexión se desconectó aproximadamente dos horas después de la configuración.

Causa posible

Después de que la interacción de SSH se detenga durante un período de tiempo, el servidor de seguridad desconecta las conexiones inactivas (http://bluebiu.com/blog/linux-ssh-session-alive.html). La configuración de SSH predeterminada no conduce a una desconexión proactiva tras el tiempo de espera. Dado que la instancia se ejecuta de forma estable en el backend, configure la conexión de nuevo para resolver este problema.

Solución

Para conservar las conexiones si no se realiza ninguna operación durante mucho tiempo, configure el envío periódico de mensajes con SSH. De esta manera, la conexión no quedará inactiva en el firewall.

  • Configure el cliente según sea necesario. Si el cliente no está configurado, no se enviará ningún paquete de latidos al servidor de forma predeterminada.
    Figura 1 Abrir el archivo de configuración de SSH de VS Code
    Figura 2 Adición de configuraciones

    La configuración es la siguiente:

    Host ModelArts-xx   
        ...   
        ServerAliveInterval 3600  # Add this configuration in the unit of second, indicating that the client will actively send a heartbeat packet to the server every hour.
        ServerAliveCountMax 3  # Add this configuration, indicating that if the server does not respond after the heartbeat packet is sent for three times, the connection will be disconnected.

    Por ejemplo, si el firewall está configurado para desconectar una conexión si la conexión está inactiva durante dos horas, establezca ServerAliveInterval en un valor inferior a dos horas (por ejemplo, una hora) en el cliente para evitar que el firewall desconecte la conexión.

  • Configure el servidor de /home/ma-user/.ssh/etc/sshd_config (Se ha configurado el notebook y 24 horas es más que el tiempo configurado en el firewall para desconectar las conexiones. Esta configuración no necesita modificarse manualmente. Solo se utiliza para ayudar a entender la configuración de SSH.)

    La configuración anterior muestra que el servidor envía activamente un paquete de latido al cliente cada 24 horas, y la conexión se desconectará si el cliente no responde después de que el paquete de latido se envíe tres veces.

    Para obtener más información, véase https://unix.stackexchange.com/questions/3026/what-do-options-serveraliveinterval-and-clientaliveinterval-in-sshd-config-d.

  • Si una conexión debe conservarse consistentemente, es una buena práctica escribir logs en un archivo de log separado y ejecutar el script en el backend. Por ejemplo:
    nohup train.sh > output.log 2>&1 & tail -f output.log