![发送关闭命令后,ssh 会话不会终止](https://linux22.com/image/69271/%E5%8F%91%E9%80%81%E5%85%B3%E9%97%AD%E5%91%BD%E4%BB%A4%E5%90%8E%EF%BC%8Cssh%20%E4%BC%9A%E8%AF%9D%E4%B8%8D%E4%BC%9A%E7%BB%88%E6%AD%A2.png)
每当我发送关闭或重新启动 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 会话之前关闭网络。
提供了几个解决方案,但没有具体的:
用于
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'
/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