Ich habe ein Problem, das auf Linux-Ubuntu-VMs (14.04 LTS) reproduzierbar ist, die in Azure erstellt wurden.
Nach der Installation des systemd
Pakets über ein Skript lehnt das System neue SSH-Verbindungen unendlich ab.
Das System startet.
Verbindung geschlossen durch xxx.xxx.xxx.xxx
Die aktive SSH-Verbindung bleibt jedoch erhalten. /etc/nologin
Im System ist keine Datei vorhanden.
Die einzige Option, die ich sehe, ist ein Hard-Reset, der das Problem löst. Aber wie vermeide ich das?
Hier ist das Skript, das ich verwende:
#!/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
Antworten:
Ich vermute, dass es eine
/etc/nologin
Datei gibt (deren Inhalt "System startet"), die nach der Installation von systemd nicht entfernt wird.[Update] Was Sie betrifft, ist ein Fehler, der im vergangenen Dezember auf Ubuntus BTS gemeldet wurde . Dies liegt an einer
/var/run/nologin
Datei (=/run/nologin
da/var/run
ist ein Symlink zu/run
), die am Ende der systemd-Installation nicht entfernt wird./etc/nologin
ist die Standard-Nologin-Datei./var/run/nologin
ist eine alternative Datei, die vomnologin
PAM-Modul (man pam_nologin
) verwendet werden kann.Beachten Sie, dass sich keine der
nologin
Dateien auf Verbindungen nach Benutzer root auswirkt. Es wird verhindert, dass sich nur normale Benutzer anmelden.quelle
/etc/shadow
und das Konto ist nicht gesperrt@xhienne gab mir die richtige Richtung.
Nachdem ich das Dateisystem durchsucht hatte, fand ich eine Datei
/run/nologin
(@xhienne schlug / etc / nologin vor), die das Problem löste.Die Bedingung bestand in
/usr/lib/tmpfiles.d/systemd.conf
Ich werde diesen Schritt in mein Skript aufnehmen.
quelle
Der Mageia Distribution Bug Tracker scheint ein verwandtes Problem zu haben: Bug 21080 - SSH-Anmeldung durch / run / nologin nach einem Neustart deaktiviert .
Nachdem dieses Problem häufig aufgetreten ist, hat das Auffinden des Trackers dazu beigetragen, eine Problemumgehung zu finden, die geeigneter sein könnte, als einfach die Datei / run / login zu entfernen .
Hier sind einige Daten zu Fragen nach Informationen in diesem Bug-Tracker:
Der Bug-Tracker und die obigen Informationen scheinen zu zeigen, dass das Problem tatsächlich auf einen Fehler beim Starten des Dämons systemd-user- session.service zurückzuführen ist.
Dies ist in der Tat der Fall in meinem Fall. Die folgende Problemumgehung korrigiert vorübergehend die gesperrte Anmeldebedingung:
Danach ist die Datei / run / nologin nicht mehr vorhanden und man kann SSH von einem anderen System ausführen . Beachten Sie jedoch, dass dies nicht zuverlässig ist, da der Benutzer manchmal keinen Zugriff auf die Konsole des betroffenen Systems hat.
quelle
Ich hatte genau das gleiche Problem, aber ich denke, dass mehrere Szenarien es schaffen können.
In meinem Fall musste ich KVM um direkten Zugriff auf unseren Remote-Server bitten, um den Remotezugriff wieder zu aktivieren, und dann:
Aber auf dem KVM-Bildschirm konnte ich tatsächlich sehen, dass es in den Notfallmodus gestartet wurde!
Zuvor hatte ich einige Änderungen an der Festplatte / Partition vorgenommen (Erhöhung der Inodes), die eine neue UUID generierten, und vergessen, die Datei / etc / fstab hinzuzufügen.
Nach der Ausgabe des Befehls:
... und durch Kopieren der neuen UUID in die fstab-Datei konnte ich den Server ohne Probleme erneut starten und der Remote-SSH-Zugriff war danach in Ordnung.
quelle
Setzen Sie in der Datei / etc / ssh / sshd_config UsePAM auf no
quelle