Sistem menolak SSH dan terjebak pada 'booting' setelah instalasi systemd

12

Saya memiliki masalah yang dapat direproduksi di Linux Ubuntu VMs (14,04 LTS) yang dibuat di Azure.

Setelah menginstal systemdpaket melalui skrip, sistem menolak koneksi ssh baru, tanpa batas.

Sistem sedang boot.

Koneksi ditutup oleh xxx.xxx.xxx.xxx

Koneksi ssh aktif tetap dipertahankan. Tidak ada /etc/nologinfile di sistem.

Satu-satunya opsi yang saya lihat adalah pengaturan ulang yang memecahkan masalah. Tetapi bagaimana saya menghindarinya?

Berikut ini skrip yang saya gunakan:

#!/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
Alex
sumber
Apakah sistemnya hang , atau hanya tidak memulai daemon shell yang aman? Pertanyaannya menyatakan satu; isi postingan menyiratkan bahwa itu mungkin saja yang lain.
DopeGhoti
@DopeGhoti Tidak ada cara bagi saya untuk memeriksa apa yang terjadi karena saya tidak dapat terhubung ke mesin dari jarak jauh. Saya akan memperbarui pertanyaan untuk membuatnya lebih jelas.
Alex

Jawaban:

15

Saya curiga ada /etc/nologinfile (yang isinya adalah "System booting.") Yang tidak dihapus setelah instalasi systemd.

[pembaruan] Yang memengaruhi Anda adalah bug yang dilaporkan di BTS Ubuntu Desember lalu. Ini karena /var/run/nologinfile (= /run/nologinkarena /var/runmerupakan symlink ke /run) yang tidak dihapus pada akhir instalasi systemd.

/etc/nologinadalah file nologin standar. /var/run/nologinadalah file alternatif yang dapat digunakan oleh nologinmodul PAM ( man pam_nologin).

Perhatikan bahwa tidak ada nologinfile yang memengaruhi koneksi oleh root pengguna, hanya pengguna biasa yang tidak bisa masuk.

xienne
sumber
Saya mereproduksi masalah ini, tidak ada file / etc / nologin yang ada. Sesi SSH aktif dipertahankan, namun yang baru ditolak hingga saya me-restart mesin.
Alex
Saya juga memeriksa /etc/shadowdan akun tidak dikunci
Alex
@Alex Answer diperbarui.
xhienne
10

@xhienne memberiku arah yang benar.

Setelah mencari melalui sistem file saya menemukan /run/nologin(@xhienne menyarankan / etc / nologin) file, menghapus yang memecahkan masalah.

Kondisi ada di /usr/lib/tmpfiles.d/systemd.conf

Saya akan memasukkan langkah ini dalam skrip saya.

sudo rm /run/nologin
Alex
sumber
Senang itu berhasil. Saya telah memperbarui jawaban saya.
xhienne
2
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.

Pelacak bug distribusi Mageia tampaknya memiliki masalah terkait yang terbuka: Bug 21080 - ssh login dinonaktifkan oleh / run / nologin setelah reboot .

Setelah mengalami masalah ini cukup sering, menemukan pelacak membantu mengidentifikasi solusi yang lebih tepat daripada hanya menghapus file / run / login .

Berikut adalah beberapa data yang terkait dengan permintaan informasi di pelacak bug itu:

$ 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

Pelacak bug dan informasi di atas tampaknya menunjukkan bahwa masalah sebenarnya disebabkan oleh kegagalan untuk memulai daemon systemd-user- session.service.

Inilah sebenarnya yang terjadi dalam kasus saya, jadi solusi berikut ini untuk sementara memperbaiki kondisi login yang terlarang:

$ sudo systemctl start systemd-user-sessions.service

Setelah melakukan ini, file / run / nologin tidak lagi ada, dan, seseorang dapat SSH dari sistem lain. Perhatikan, bagaimanapun, bahwa ini tidak dapat diandalkan karena kadang-kadang pengguna tidak memiliki akses ke konsol dari sistem yang terpengaruh.

kbulgrien
sumber
0

Saya memiliki masalah yang sama persis ini tetapi saya pikir beberapa skenario dapat membuatnya.

Dalam kasus saya, untuk mengaktifkan akses jarak jauh lagi saya harus meminta KVM untuk akses langsung ke server jarak jauh kami dan kemudian:

# 1. Start SSH service
/etc/init.d/ssh start

# 2. Remove the nologin file
rm /run/nologin

Tetapi pada layar KVM saya benar-benar bisa melihat bahwa itu boot ke mode darurat!

Sebelumnya, saya telah membuat beberapa perubahan disk / partisi (meningkatkan inode) yang menghasilkan UUID baru dan lupa menambahkannya ke file / etc / fstab.

Setelah mengeluarkan perintah:

blkid

... dan menyalin paste UUID baru pada file fstab, saya dapat me-reboot server lagi tanpa masalah dan akses SSH jauh baik-baik saja setelah itu.

Jason
sumber
0

Di / etc / ssh / sshd_config atur UsePAM ke no

UsePAM no
Saeed lali
sumber
Apa yang akan dilakukan dan apa akibatnya?
Kusalananda
Jawaban ini tampaknya tidak berlaku untuk situasi ini - tidak menjelaskan mengapa pengguna melihat teks "Sistem mem-boot" atau menjelaskan bagaimana menginstal sistem dan menghasilkan konfigurasi yang rusak.
Jeff Schaller