Dopo aver inviato il comando shutdown, la sessione ssh non termina


12

Ogni volta che invio il comando per spegnere o riavviare i miei server Debian, la mia shell viene lasciata in sospeso e non risponde (non riesco a digitare alcun comando).

inserisci qui la descrizione dell'immagine

Eseguendo la stessa azione in Ubuntu, la sessione si chiude con garbo, quindi non ho un terminale legato lasciato appeso lì. Esiste un pacchetto che devo installare o una modifica della configurazione da apportare per poter ottenere lo stesso comportamento su Debian?


Lo stesso comportamento si verifica con sudo shutdown -h now(per lo spegnimento) e / o sudo reboot(per il riavvio)?
eyoung100,

sì, succede anche con quelli.
Programster,

2
NB puoi uccidere una di queste sessioni ssh sospese digitando <invio>, tilde e punto (~.).
Kenster,

Risposte:


11

Questo ha funzionato per me:

apt-get install libpam-systemd dbus

Assicurati anche di avere UsePAM yesnella tua configurazione SSH.

grep -i UsePAM /etc/ssh/sshd_config

Sfortunatamente, è necessario riavviare per rendere effettiva la soluzione ...

Spiegazioni dettagliate su serverfault .


Ho appena avuto lo stesso problema su Ubuntu 16.04 per il quale la soluzione precedente non funzionava ma questa funzionava.
Programster

7

Sembra che sia un systemdproblema attualmente rilevato sotto il bug # 751636 .

Quando l'host viene arrestato o riavviato, è systemdpossibile arrestare la rete prima di interrompere la sessione ssh.

Ci sono un paio di soluzioni fornite ma niente di concreto:

  1. Utilizzare acpid/acpi-support-baseper gestire gli eventi di alimentazione e aggiungere quanto segue a/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 quindi creare alias nel tuo ~/.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. Creando /etc/systemd/system/ssh-user-sessions.servicecon quanto segue:

    [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
    

è bello sapere che si tratta di un bug noto. Ho provato la seconda soluzione, ma non sembra funzionare per me quando si invia il comando reboot. Mi sono assicurato di renderlo eseguibile.
Programmatore

1
Ricarica il demone systemd:, systemctl daemon-reloadanche per attivare immediatamente il servizio systemd: systemctl start ssh-user-sessions.servicee per abilitare il servizio all'avviosystemctl enable ssh-user-sessions.service
neurone

Eseguire i primi 2 secondi ha funzionato. L'esecuzione del terzo comando ha comportato: The unit files have no [Install] section. They are not meant to be enabled using systemctl.ma non sembra essere necessario.
Programster,

Sì, ho dimenticato di menzionare che il file Unit può includere una "[Install]"sezione, che contiene le informazioni di installazione per l'unità. Questa sezione non è interpretata da systemddurante il runtime. Viene utilizzato esclusivamente dai comandi di abilitazione e disabilitazione dello systemctlstrumento durante l'installazione di un'unità.
neurone,

Ho aggiunto [Install]seguito WantedBy=multi-user.targetal file, che ha comportato la systemctl enable ssh-user-sessions.servicemancata generazione di un errore e ha reso effettivo il servizio al riavvio. C'è qualcosa di sbagliato nel fare questo?
Programster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.