Depois de enviar o comando shutdown, a sessão ssh não termina

12

Sempre que eu envio o comando para desligar ou reiniciar meus servidores Debian, meu shell fica parado e sem resposta (não é possível digitar nenhum comando).

insira a descrição da imagem aqui

A execução da mesma ação no Ubuntu resulta no fechamento normal da sessão, para que eu não tenha um terminal amarrado pendurado lá. Existe um pacote que eu preciso instalar ou uma alteração na configuração a ser feita para que eu possa ter esse mesmo comportamento no Debian?

Programador
fonte
O mesmo comportamento ocorre com sudo shutdown -h now(para desligamento) e / ou sudo reboot(para reinicialização)?
eyoung100
sim, isso ocorre com eles também.
Programster
2
NB, você pode matar uma dessas sessões ssh travadas digitando <enter>, til e period (~.).
Kenster

Respostas:

11

Isso funcionou para mim:

apt-get install libpam-systemd dbus

Verifique também se você possui UsePAM yessua configuração ssh.

grep -i UsePAM /etc/ssh/sshd_config

Infelizmente, você precisa reiniciar para que a solução entre em vigor ...

Explicações detalhadas sobre a falha do servidor .

mivk
fonte
Eu apenas tive o mesmo problema no ubuntu 16.04 para o qual a solução anterior não funcionou, mas esta funcionou.
Programster
7

Parece que esse é um systemdproblema atualmente rastreado no bug # 751636 .

Quando o host é desligado ou reiniciado, systemdpode desligar a rede antes de encerrar a sessão ssh.

Existem algumas soluções fornecidas, mas nada concreto:

  1. Usando acpid/acpi-support-basepara manipular os eventos de energia e adicionar o seguinte ao/etc/acpi/powerbtn-acpi-support.sh

    else
    -       # Normal handling.
    -       /sbin/shutdown -h -P now "Power button pressed"
    +
    +       if [ -x /bin/systemctl ] ; then
    +           echo "\nPower button pressed\nThe system is going down for system halt NOW!" |\
    +            /usr/bin/wall -n
    +           /bin/systemctl --force poweroff
    +       else
    +           # Normal handling.
    +           /sbin/shutdown -h -P now "Power button pressed"
    +       fi
    +
    fi
    

    e crie aliases em seu ~/.bashrc:

    alias reboot='echo "The system is going down for system reboot NOW!" |\
    /usr/bin/wall -n ; /bin/systemctl --force reboot'
    
    alias poweroff='echo "The system is going down for system halt NOW!" |\
    /usr/bin/wall -n ; /bin/systemctl --force poweroff'
    
  2. Criando /etc/systemd/system/ssh-user-sessions.servicecom o seguinte:

    [Unit]
    Description=Shutdown all ssh sessions before network
    After=network.target
    
    [Service]
    TimeoutStartSec=0
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/bin/true
    ExecStop=/usr/bin/killall sshd
    
neurônio
fonte
é bom saber que é um bug conhecido. Tentei a segunda solução, mas ela não parece funcionar para mim ao enviar o comando de reinicialização. Eu fiz questão de executá-lo.
Programster
1
Recarregar o daemon systemd: systemctl daemon-reload, também em ordem para ativar o serviço systemd imediatamente: systemctl start ssh-user-sessions.servicee para ativar o serviço na inicializaçãosystemctl enable ssh-user-sessions.service
neurônio
A execução dos 2 primeiros commnds fez o truque. A execução do terceiro comando resultou em: The unit files have no [Install] section. They are not meant to be enabled using systemctl.mas não parece ser necessário.
Programster
Sim, esqueci de mencionar que o arquivo da unidade pode incluir uma "[Install]"seção que contém informações de instalação da unidade. Esta seção não é interpretada por systemddurante o tempo de execução. É usado exclusivamente pelos comandos de ativação e desativação da systemctlferramenta durante a instalação de uma unidade.
Neuron
Eu adicionei [Install]seguido pelo WantedBy=multi-user.targetarquivo, o que resultou em systemctl enable ssh-user-sessions.servicenão gerar um erro e resulta no serviço entrando em vigor nas reinicializações. Há algo de errado em fazer isso?
Programster