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)