У меня есть проблема, которую можно воспроизвести на виртуальных машинах Linux Ubuntu (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
Ответы:
Я подозреваю, что существует
/etc/nologin
файл (содержимое которого будет "Система загружается."), Который не удаляется после установки systemd.[обновление] На вас влияет ошибка, о которой сообщалось на BTS в Ubuntu в декабре прошлого года. Это связано с
/var/run/nologin
файлом (=,/run/nologin
поскольку/var/run
это символическая ссылка/run
), который не удаляется в конце установки systemd./etc/nologin
стандартный файл nologin/var/run/nologin
альтернативный файл, который может использоватьсяnologin
модулем PAM (man pam_nologin
)Обратите внимание, что ни один из
nologin
файлов не влияет на соединения пользователя root, вход в систему запрещен только обычным пользователям.источник
/etc/shadow
и учетная запись не заблокирована@xhienne дал мне правильное направление.
После поиска по файловой системе я нашел
/run/nologin
(@xhienne предложил / etc / nologin) файл, удаление которого решило проблему.Условие существовало в
/usr/lib/tmpfiles.d/systemd.conf
Я включу этот шаг в мой сценарий.
источник
В трекере ошибок дистрибутива Mageia, похоже, открыта связанная проблема: Ошибка 21080 - вход в систему ssh отключен / run / nologin после перезагрузки .
После частого появления этой проблемы обнаружение трекера помогло найти обходной путь, который мог бы быть более подходящим, чем простое удаление файла / run / login .
Вот некоторые данные, относящиеся к запросам информации в этом трекере ошибок:
Отслеживание ошибок и приведенная выше информация, кажется, показывают, что проблема на самом деле связана с тем, что не удалось запустить демон systemd-user-sessions.service .
Это фактически то, что происходит в моем случае, поэтому следующий обходной путь временно исправляет условие запрещенного входа в систему:
После этого файл / run / nologin больше не существует, и можно получить SSH из другой системы. Однако обратите внимание, что это ненадежно, так как иногда пользователь не имеет доступа к консоли уязвимой системы.
источник
У меня была точно такая же проблема, но я думаю, что несколько сценариев могут создать ее.
В моем случае, чтобы снова включить удаленный доступ, мне пришлось запросить KVM для прямого доступа к нашему удаленному серверу, а затем:
Но на экране KVM я действительно мог видеть, что он загружается в аварийный режим!
Ранее я делал некоторые изменения диска / раздела (увеличивая inode), которые генерировали новый UUID, и забыл добавить его в файл / etc / fstab.
После выдачи команды:
... и скопировав новый UUID в файл fstab, я смог перезагрузить сервер снова без проблем, и удаленный доступ по SSH был в порядке после этого.
источник
В / etc / ssh / sshd_config установите для UsePAM значение no
источник