Quando você encerra ou reinicia o sistema, systemd
tenta interromper todos os serviços o mais rápido possível. Isso envolve derrubar a rede e encerrar todos os processos que ainda estão ativos - geralmente nessa ordem. Portanto, quando o systemd mata os processos SSH bifurcados que estão lidando com suas sessões SSH, a conexão de rede já está desativada e eles não têm como fechar a conexão do cliente normalmente.
Seu primeiro pensamento pode ser matar todos os processos SSH como o primeiro passo durante o desligamento, e existem alguns arquivos de serviço do systemd por aí que fazem exatamente isso.
Mas é evidente que existe uma solução mais limpa (como ele é "suposto" ser feito): systemd-logind
.
systemd-logind
monitora as sessões de usuários ativos (locais e SSH) e atribui todos os processos gerados dentro deles às chamadas "fatias". Dessa forma, quando o sistema é desligado, o systemd pode simplesmente SIGTERM tudo dentro das fatias do usuário (que inclui o processo SSH bifurcado que está realizando uma sessão específica) e continuar desligando os serviços e a rede.
systemd-logind
requer que um módulo PAM seja notificado sobre novas sessões de usuário e você precisará dbus
usar loginctl
para verificar seu status; portanto, instale ambas:
apt-get install libpam-systemd dbus
Certifique-se de que você /etc/ssh/sshd_config
realmente vai usar o módulo UsePAM yes
.