systemdをインストールした後、システムはSSHを拒否し、「開始」状態で停止します。

systemdをインストールした後、システムはSSHを拒否し、「開始」状態で停止します。

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

答え1

/etc/nologinsystemdをインストールした後も削除されないファイル(「システムが起動中です」という内容)があるようです。

[更新]あなたに影響を与えるのはUbuntuのBTSで報告されたバグ去る12月。これは、システムのインストールの終わりにファイルが削除されないためです/var/run/nologin(=シンボリックリンクで/run/nologinあるため)。/var/run/run

/etc/nologin標準の nologin ファイルです。/var/run/nologinPAMモジュールで利用可能な代替ファイルですnologinman pam_nologin)。

nologinこれらのファイルはrootユーザーの接続に影響を与えず、通常のユーザーのログインのみを防ぐことに注意してください。

答え2

@xhienneさんが正しい方向を教えてくれました。

ファイルシステムを検索した後/run/nologin(@xhienneが/etc/nologinを提案)、ファイルを見つけて削除すると問題が解決しました。

このような状況は/usr/lib/tmpfiles.d/systemd.conf

私のスクリプトにこのステップを含めましょう。

sudo rm /run/nologin

答え3

Note:  This answer is applicable whether or not systemd was recently installed or not.
       The issue was observed even after systemd had been installed a long time.

Mageiaリリースのバグトラッカーに関連する問題が開いているようです。 バグ 21080 - /run/nologin は、再起動後に SSH ログインを無効にします。

この問題が頻繁に発生する場合、トラッカーを見つけることは、単にトラッカーを削除するよりも適切な解決策を決定するのに役立ちます。/実行/ログイン文書。

以下は、このバグトラッカーの情報クエリに関するいくつかのデータです。

$ ls -l /run/nologin 
-rw-r--r-- 1 root root 42 Mar  6 10:11 /run/nologin
$ cat /run/nologin
"System is booting up. See pam_nologin(8)"
$ date
Tue Mar  6 11:10:38 CST 2018
$ uptime
11:15:10 up  1:04,  0 users,  load average: 0.07, 0.07, 0.08
$ systemctl status systemd-user-sessions.service
● systemd-user-sessions.service - Permit User Sessions
   Loaded: loaded (/usr/lib/systemd/system/systemd-user-sessions.service; static
   Active: inactive (dead)
     Docs: man:systemd-user-sessions.service(8)
$ systemctl show -p Requires,Wants,Requisite,BindsTo,PartOf,Before,After  systemd-user-sessions.service --no-pager
Requires=system.slice sysinit.target
Requisite=
Wants=
BindsTo=
PartOf=
[email protected] prefdm.service crond.service multi-user.target plymouth-quit-wait.service session-c2.scope display-manager-failure.service systemd-ask-password-wall.service session-c1.scope [email protected] shutdown.target [email protected] user-983.slice user-1000.slice plymouth-quit.service
After=system.slice systemd-journald.socket remote-fs.target network.target systemd-journal-flush.service sysinit.target nss-user-lookup.target basic.target

バグトラッカーと上記の情報は、問題が実際に起動に失敗したために発生したことを示すようです。systemd-usersession.service悪魔。

これが実際に私の場合に起こったことなので、次の回避策で禁止されているログイン状況を一時的に修正しました。

$ sudo systemctl start systemd-user-sessions.service

これをした後、/run/ログインしないでくださいファイルは存在しなくなり、他のシステムからSSHに接続できます。ただし、時にはユーザーが影響を受けるシステムのコンソールにアクセスできないため、信頼できません。

答え4

/etc/ssh/sshd_configでUsePAMをnoに設定します。

UsePAM no

関連情報