Cuando apaga o reinicia su sistema, systemd
intenta detener todos los servicios lo más rápido posible. Eso implica derribar la red y terminar todos los procesos que aún están vivos, generalmente en ese orden. Entonces, cuando systemd mata los procesos SSH bifurcados que manejan sus sesiones SSH, la conexión de red ya está deshabilitada y no tienen forma de cerrar la conexión del cliente con gracia.
Su primer pensamiento podría ser simplemente matar todos los procesos SSH como el primer paso durante el apagado, y hay bastantes archivos de servicio systemd que hacen exactamente eso.
Pero hay, por supuesto, una solución más limpia (cómo se "supone" que hacer): systemd-logind
.
systemd-logind
realiza un seguimiento de las sesiones de usuario activas (locales y SSH) y asigna todos los procesos generados dentro de ellos a los llamados "sectores". De esa manera, cuando el sistema se apaga, systemd puede SIGTERMAR todo lo que se encuentra dentro de los segmentos del usuario (que incluye el proceso SSH bifurcado que está administrando una sesión en particular) y luego continuar apagando los servicios y la red.
systemd-logind
requiere un módulo PAM para recibir notificaciones de nuevas sesiones de usuario y dbus
deberá usarlo loginctl
para verificar su estado, así que instale ambos:
apt-get install libpam-systemd dbus
Asegúrese de que /etc/ssh/sshd_config
realmente va a utilizar el módulo con UsePAM yes
.