Warum erhalte ich beim Neustart eines Servers mit Ubuntu 14.04 die Fehlermeldung "Verbindung abgelehnt"?
Ich sehe das ssh: connect to host <IP-address-here> port 22: Connection refused
aber erst für 14.04 und erst nach einem Neustart. Ich verwende 12.04 Desktop zu Hause. Wie behebe ich das?
Um die Frage klarer zu machen, hier ist, was für mich funktioniert oder nicht:
- SSH in eine Neuinstallation von 12.04> ausloggen> SSH wieder einspielen> funktioniert
- SSH in eine Neuinstallation von 12.04> Neustart> SSH erneut einspielen> funktioniert
- SSH in eine Neuinstallation von 14.04> ausloggen> SSH wieder einspielen> funktioniert
- SSH in eine Neuinstallation von 14.04> Neustart> SSH erneut einspielen> Verbindung abgelehnt
Das Problem, das ich habe, ist einzigartig für 14.04 und tritt erst nach einem Neustart auf. Ich habe mehrere Server, auf denen vorher 12.04 ausgeführt wurde, und alles funktioniert noch einwandfrei. Ich habe einen neuen Server, auf dem ich 14.04 verwenden möchte, und ich möchte verstehen, was falsch läuft. Irgendwelche Vorschläge?
Folgendes habe ich bisher versucht:
sudo traceroute -p 22 -T <IP-address-here>
Traceroute funktioniert einwandfrei. Ich erhalte eine Antwort vom Server auf SSH-Port 22.
initctl list
...
ssh start/running, process 23371
...
Sieht so aus, als ob ssh auf dem 14.04-Server so eingestellt ist, dass es beim Booten startet (wie erwartet).
tom@Desktop:~$ ssh -vvv root@<IP-address-here>
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to <IP-address-here> [<IP-address-here>] port 22.
debug1: connect to address <IP-address-here> port 22: Connection refused
ssh: connect to host <IP-address-here> port 22: Connection refused
Bearbeiten: Hier ist das gesamte Syslog von einem frisch erstellten Rechner . Ich habe es erstellt, SSH wurde in & reboot now
Befehl ausgegeben , dann wurde ein Verbindungsfehler zurückgewiesen, nachdem ich darauf gewartet hatte, dass es neu gestartet und beim zweiten Mal versucht hat, SSH zu starten . Fester Neustart über das Hosting Control Panel und jetzt funktioniert die SSH-Verbindung wieder.
Antworten:
Schnelle Antwort:
SSH ist nicht das Problem. Der Befehl, den Sie zum Neustarten verwenden, ist das Problem: Tun Sie nichts, tun Sie
reboot now
nichtsreboot
odershutdown -r now
starten Sie Ihr System neu.Die Befehlssyntax ( seit 13.04 ) lautete :
Das gab es noch
REBOOTCOMMAND
nie. In 12.04 wurde Ihrnow
nur ignoriert, aber jetzt wird es benutzt ... und es zerstört alles.Lange Antwort mit meinen Testergebnissen und Erklärung:
Ich habe ein ähnliches Problem mit einigen Servern, auf denen 14.04 AND in VPS (gehostet beim französischen OVH-Anbieter - OpenVZ) AND ausgeführt wird, wenn
reboot now
der Server selbst ausgeführt wird.Wie Sie habe ich den Befehl
reboot now
über die Konsole ausgegeben (mit SSH angemeldet). Einige Sekunden nachdem ich gedrückt habe RETURN, wird meine Sitzung automatisch getrennt. Wie Sie konnte ich nach der Ausgabe dieses Befehls noch nie wieder über SSH eine Verbindung zum Server herstellen.Deshalb habe ich mich entschlossen, die von OVH bereitgestellte KVM-Konsole zu öffnen. (Emulieren des direkten Zugriffs über Tastatur und Bildschirm auf einem physischen Server für diese Art von virtuellem Server).
Ich konnte eine Verbindung zu meinem Computer herstellen und sah, dass sie in den Einzelbenutzermodus wechselte und darauf wartete, dass ich CTRL+ drückte, Dum fortzufahren, oder das root-Passwort eingab, um in den Wartungsmodus zu wechseln. Ich drückte die Tastenkombination, um den Vorgang fortzusetzen, und konnte dann erneut SSH auf meinem System ausführen. Was war meine Überraschung, als ich nach dem Laufen feststellte
uptime
, dass die Betriebszeit nicht 2 oder 3 Minuten betrug, aber dennoch viel Zeit in Anspruch nahm : Diereboot now
Ausführung in einem Ubuntu 14.04 VPS ist kein wirklicher Neustart, sondern verlangt nur, in den Einzelbenutzermodus zu wechseln!Aus diesem Grund habe ich gelernt, in meinem VPS niemals einen Neustart anzufordern, sondern ihn über den Befehl anzufordern, der auf der Verwaltungsoberfläche des Hosters bereitgestellt wird.
Somit gibt es kein Problem mit Ihrer SSH-Installation. Das Problem ist, wenn Sie tippen
reboot now
. Tatsächlich habe ich es später auch getestet, wenn Siereboot
(nur das Wort, keine Option) eingegeben hätten, hätte es getan, was Sie vorhatten: Starten Sie den Server neu.Verwenden Sie
reboot
mit einem Argument (von der Manpage), rufen Sie den Befehlshutdown
mit den angegebenen Argumenten auf. Und in der Tat habe ich bei der Ausführungshutdown now
das gleiche Verhalten: Das System wird nicht neu gestartet, sondern in den Einzelbenutzermodus versetzt.Anmerkung: Es sieht so aus, als ob dies das beabsichtigte Verhalten ist, da die Meldung, die auf dem Bildschirm angezeigt wird, nachdem Sie diesen Befehl ausgeführt haben, etwa Folgendes sagt:
Wartungsmodus oder Einzelbenutzermodus, dies ist dasselbe, ein Runlevel mit mehr als einer Shell, keinem Netzwerk, keinen Netzwerkprozessen, ...
Dies kann verwirrend sein. Beachten Sie jedoch, dass die korrekte Verwendung
shutdown
beispielsweiseshutdown -h now
darin besteht, das System jetztshutdown -r now
anzuhalten oder es jetzt neu zu starten. Mir war nicht bewusst, dassshutdown now
das System nur in den Einzelbenutzermodus versetzt werden würde. Normalerweise mache ich dasinit S
, um das zu erreichen.quelle
sudo reboot now
funktioniert einwandfrei in 12.04 unduptime
entspricht dem letzten mal das ich es mache. Sehr interessante Änderung für den 14.04.sudo reboot --single-user
diese Funktionalität bekommen ???Ich komme vielleicht zu spät, und es mag offensichtlich sein, aber was für mich funktioniert hat, war die Überprüfung der Konfigurationsdatei
/etc/ssh/sshd_config
: Das Ausführen des Dämons mit/etc/init.d/ssh start
oder einer anderen Kombination hat gezeigt, dass der Dienst ausgeführt wurde, obwohl dies nicht der Fall war, aber wenn ich die ausführbare Datei mit starte sein absoluter Pfad (in meinem Fall/usr/sbin/sshd
) Ich habe gesehen, dass am Ende der Konfigurationsdatei ein "0B" angehängt wurde, das beim Starten einen Fehler verursachte. Das Entfernen löste das Problem.quelle
Eine weitere mögliche Ursache ist der
ufw
Verlust der SSH-Portregelkonfiguration. Dies ist mir mindestens ein oder zwei Mal aufgefallen, als die Firewall-Konfiguration nach dem Anwenden von Updates und dem Neustart den Zugriff auf den Server blockierte. Durch die Verwendung der VPS-Konsolenfunktion meines Hosting-Providers konnte ich auf den Computer zugreifen und das Problem diagnostizieren. Das folgende Beispiel zeigt das Problem (dh kein Eintrag für Port 22):Um den Port wieder zu aktivieren, gehen Sie wie folgt vor:
quelle
Für mein System bestand das Problem darin, dass das ssh init-Skript
/etc/init.d/ssh
das einzige war, das auf das Vorhandensein der Upstart-Version von init prüfte.Fängt
/etc/init.d/ssh
also nicht an,ssh,
weil es glaubt, dass es von gestartet wirdupstart
.In meinem Fall startet Upstart aufgrund meiner speziellen Konfiguration nicht:
Es gab eine korrekte Konfiguration in
/etc/init/ssh.conf
, aber es gab auch eine/etc/init/ssh.override
Dateimanual
, die enthielt , was bedeutet, dassssh
erwartet wird, dass sie manuell gestartet wird.Diese Datei wurde vom
get-remnux.sh
Installationsskript erstellt.Durch manuelles Starten oder Entfernen der
/etc/init/ssh.override
Datei wird das Problem behoben.quelle