系统拒绝 SSH 并在 systemd 安装后停留在“启动”状态

Ale*_*lex 16 linux ssh systemd

我有一个在 Azure 中创建的 Linux Ubuntu VM (14.04 LTS) 上可重现的问题。

systemd通过脚本安装软件包后,系统无限拒绝新的 ssh 连接。

系统正在启动。

连接被 xxx.xxx.xxx.xxx 关闭

但是,活动的 ssh 连接保持不变。/etc/nologin系统中不存在文件。

我看到的唯一选择是解决问题的硬重置。但是我该如何避免呢?

这是我正在使用的脚本:

#!/bin/bash

# Script input arguments
user=$1
server=$2

# Tell the shell to quote your variables to be eval-safe!

printf -v user_q '%q' "$user"
printf -v server_q '%q' "$server"
#

SECONDS=0
address="$user_q"@"$server_q"

function run {
    ssh "$address" /bin/bash "$@"
}

run << SSHCONNECTION
    # Enable autostartup

        # systemd is required for the autostartup
        sudo dpkg-query -W -f='${Status}' systemd 2>/dev/null | grep -c "ok installed" > /home/$user_q/systemd-check.txt
        systemdInstalled=\$(cat /home/$user_q/systemd-check.txt)
                
        if [[ \$systemdInstalled -eq 0 ]]; then
            echo "Systemd is not currently installed. Installing..."
            
            # install systemd
            sudo apt-get update
            sudo apt-get -y install systemd

        else
            echo "systemd is already installed. Skipping this step."
        fi

SSHCONNECTION
Run Code Online (Sandbox Code Playgroud)

xhi*_*nne 22

我怀疑有一个/etc/nologin文件(其内容是“系统正在启动。”)在 systemd 安装后没有被删除。

[更新] 影响您的是去年 12 月在 Ubuntu 的 BTS报告的错误。这是由于在 systemd 安装结束时未删除的/var/run/nologin文件(=/run/nologin因为/var/run是到 的符号链接/run)。

/etc/nologin是标准的 nologin 文件。/var/run/nologin是可供nologinPAM 模块使用的备用文件( man pam_nologin)。

请注意,这些nologin文件都不会影响 root 用户的连接,只有普通用户无法登录。


Ale*_*lex 12

@xhienne 给了我正确的方向。

在搜索文件系统后,我找到了/run/nologin(@xhienne 建议的 /etc/nologin)文件,删除它解决了问题。

条件存在于 /usr/lib/tmpfiles.d/systemd.conf

我将在我的脚本中包含这一步。

sudo rm /run/nologin
Run Code Online (Sandbox Code Playgroud)