Teoria
Alguns sistemas init, incluindo o systemd, fornecem um recurso para eliminar todos os processos pertencentes ao serviço. O serviço geralmente inicia um único processo que cria mais processos por bifurcação e esses processos também podem fazer isso. Todos esses processos são tipicamente considerados parte do serviço. No systemd isso é feito usando cgroups .
No systemd, todos os processos pertencentes a um serviço são eliminados quando o serviço é interrompido por padrão. O servidor SSH é obviamente parte do serviço. Quando você se conecta ao servidor, o servidor SSH geralmente se bifurca e o novo processo manipula sua sessão SSH. Ao se dar conta do processo de sessão do SSH ou de seus filhos, outros processos do lado do servidor são iniciados, incluindo sua tela ou tmux .
Killmode e ativação de soquete
O comportamento padrão pode ser alterado usando a diretiva KillMode
. O projeto upstream não inclui todos os arquivos .service
e, portanto, estes variam por distribuição. Normalmente, existem duas maneiras de ativar o SSH no seu sistema. Um é o clássico ssh.service
que mantém um daemon SSH de longa duração escutando na rede. O outro é via ativação de soquete manipulado pelo ssh.socket
que, por sua vez, inicia [email protected]
, que é executado apenas para uma única sessão SSH.
Soluções
Se seus processos forem mortos no final da sessão, é possível que você esteja usando a ativação de soquete e seja morto pelo systemd quando perceber que o processo de sessão SSH foi encerrado. Nesse caso, existem duas soluções. Uma é evitar o uso da ativação de soquete usando ssh.service
em vez de ssh.socket
. A outra é definir KillMode=process
na seção Service
de [email protected]
.
A configuração KillMode=process
também pode ser útil com o clássico ssh.service
, pois evita a morte do processo de sessão SSH ou dos processos tela ou tmux quando o servidor é interrompido ou reiniciado.
Notas futuras
Esta resposta aparentemente ganhou um nível de popularidade. Embora funcionasse para o OP, pode acontecer que ele não funcione para alguém no futuro, devido ao desenvolvimento ou configuração do systemd-logind . Por favor, verifique a documentação em sessões de log-in se você tiver um comportamento diferente da descrição nesta resposta.