发送关闭命令后,ssh 会话不会终止

发送关闭命令后,ssh 会话不会终止

每当我发送关闭或重新启动 Debian 服务器的命令时,我的 shell 都会挂起且无响应(无法键入任何命令)。

在此输入图像描述

在 Ubuntu 中执行相同的操作会导致会话正常关闭,因此我没有挂在那里的捆绑终端。是否需要安装某个软件包或进行配置更改才能在 Debian 上获得相同的行为?

答案1

这对我有用:

apt-get install libpam-systemd dbus

还要确保您UsePAM yes的 ssh 配置中有。

grep -i UsePAM /etc/ssh/sshd_config

不幸的是,您需要重新启动才能使解决方案生效......

详细解释服务器故障

答案2

看起来这是systemd当前跟踪的问题错误#751636

当主机关闭或重新启动时,systemd可能会在终止 ssh 会话之前关闭网络。

提供了几个解决方案,但没有具体的:

  1. 用于acpid/acpi-support-base处理电源事件并将以下内容添加到/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
    

    然后在您的中创建别名~/.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. /etc/systemd/system/ssh-user-sessions.service使用以下内容进行创建:

    [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
    

相关内容