Система відмовляється від SSH і застрягла на "завантаженні" після встановлення системи


12

У мене є проблема, яку можна відтворити на Linux Ubuntu VM (14,04 LTS), створений у Azure.

Після установки 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

Система висить чи просто не запускає демон захищеної оболонки? Питання констатує одне; тіло посади передбачає, що цілком може бути іншим.
DopeGhoti

@DopeGhoti Немає можливості перевірити, що відбувається, оскільки я не можу віддалено підключитися до машини. Я оновлю питання, щоб зробити його зрозумілішим.
Alex Alex

Відповіді:


15

Я підозрюю, що існує /etc/nologinфайл (вміст якого буде "Система завантажується."), Який не видаляється після встановлення системи.

[update] Що впливає на вас, це помилка, про яку повідомлялося на BTS Ubuntu минулого грудня. Це пов'язано з тим, що /var/run/nologinфайл (= /run/nologinоскільки /var/runє символьним посиланням на /run), який не видаляється наприкінці встановленої системи.

/etc/nologin- це стандартний файл нологіну. /var/run/nologin- це альтернативний файл, який може використовуватися nologinмодулем PAM ( man pam_nologin).

Зауважте, що жоден з nologinфайлів не впливає на з'єднання з кореневим користувачем, лише регулярні користувачі не можуть увійти в систему.


Я відтворив проблему, немає файлу / etc / nologin. Активний сеанс SSH підтримується, однак нові відмовляються, поки я не перезавантажую машину.
Олексій

Я також перевірив, /etc/shadowі обліковий запис не заблоковано
Олексій

@Alex відповідь оновлено.
xhienne

10

@xhienne дав мені правильний напрямок.

Після пошуку файлової системи я знайшов /run/nologin(@xhienne запропонував / etc / nologin) файл, видаливши який вирішив проблему.

Умова існувала в /usr/lib/tmpfiles.d/systemd.conf

Я включу цей крок у свій сценарій.

sudo rm /run/nologin

Радий, що це працює. Я оновив свою відповідь.
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.

Здається, у трекера помилок розповсюдження Mageia відкрита відповідна проблема: помилка 21080 - вхід в систему ssh відключений / run / nologin після перезавантаження .

Випробувавши цю проблему досить часто, пошук трекера допомогло визначити вирішення, яке могло б бути доцільніше, ніж просто видалити файл / run / login .

Ось деякі дані, пов’язані із запитами щодо інформації у цьому трекері помилок:

$ 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=
Before=getty@tty1.service 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 user@983.service shutdown.target user@1000.service 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-user- session.service.

Це насправді відбувається в моєму випадку, тому наступне вирішення тимчасово виправляє заборонену умову входу:

$ sudo systemctl start systemd-user-sessions.service

Після цього файл / run / nologin більше не присутній, і можна SSH з іншої системи. Однак зауважте, що це не є надійним, оскільки іноді користувач не має доступу до консолі системи, на яку впливає система.


0

У мене була така ж проблема, але я думаю, що декілька сценаріїв можуть її створити.

У моєму випадку, щоб знову ввімкнути віддалений доступ, мені довелося запитати KVM для прямого доступу до нашого віддаленого сервера, а потім:

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

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

Але на екрані KVM я фактично міг побачити, що він завантажився в аварійний режим!

Раніше я вносив деякі зміни диска / розділу (збільшуючи вставки), які генерували новий UUID і забули додати до нього файл / etc / fstab.

Після видачі команди:

blkid

... і скопіювавши вставку нового UUID у файл fstab, мені вдалося перезавантажити сервер знову без проблем і віддалений доступ до SSH після цього був нормальним.


0

У / etc / ssh / sshd_config встановіть UsePAM на ні

UsePAM no

Що б це зробило і які були наслідки?
Kusalananda

Ця відповідь, схоже, не стосується цієї ситуації - вона не пояснює, чому користувач бачить текст "Система завантажується", або пояснює, як при встановленні systemd генерується зламана конфігурація.
Джефф Шаллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.