Starten Sie SSH auf einem Computer neu, auf dem SSH der einzige Zugriffsmodus ist

29

Ich habe einige Änderungen an der Datei sshd_config vorgenommen und muss daher neu starten. Ich suche Tipps zum sicheren Neustart von ssh, wenn der physische Zugriff auf den Server eine Huga PITA wäre.

Mitch
quelle

Antworten:

42

Wenn Sie sshd neu starten, während Sie über ssh angemeldet sind, wird Ihre ssh-Verbindung nicht getrennt.

Wenn Sie sich Sorgen um Ihre Konfiguration machen, melden Sie sich einige Male über ssh an und starten Sie neu. Wenn Sie sich mit neuen Verbindungen nicht mehr einloggen können, haben Sie jetzt Zugriff, um die Probleme zu beheben.

Erwähnt in einem Kommentar von @Milan Babuškov: Testet sshd -tIhre Konfiguration auf Syntaxkorrektheit , wenn Sie wirklich sicher sein möchten.

Ein weiterer Vorschlag von @Ronald Pottol war, eine cronTask zum Neustarten des Servers mit einer bekannten funktionierenden Konfiguration einzurichten . Vielleicht übertrieben, aber wenn Sie einen unternehmenskritischen Server aktualisieren, können Sie manchmal nie zu vorsichtig sein.

cpbills
quelle
Das ist ziemlich einfach, macht auch Sinn. Danke für die wirklich schnelle Antwort. Zu Ihrer Information, die Änderungen, die ich vorgenommen habe, haben großartig funktioniert;)
Mitch
6

Wenn Sie Zugriff auf die Hardware haben, können Sie ein Terminal an der seriellen Schnittstelle / dev / ttyS0 anschließen. Dann können Sie eine Hintertür in Ihren Server haben.

einfach hinzufügen

SO:2345:respawn:/sbin/mingetty ttySO

zu Ihrer / etc / inittab und ein Terminal wird über Ihre serielle Schnittstelle gespawnt. Sie können einen Serial Port Concentrator oder ein Nullmodem vom Server daneben verwenden.

Keithosu
quelle
Cool! Ist das eine ziemlich übliche Praxis?
Mitch
3
Ziemlich normal, solange Sie eine Möglichkeit haben, eine Verbindung zu dem Computer herzustellen, bei dem es sich um den seriellen Terminalserver handelt.
Kamil Kisiel
2
Es kann sein, aber aufgrund der Virtualisierung ist es nicht so notwendig, weil Sie über den Hypervisor verwalten können. Eine andere coole Sache ist, wenn das BIOS "Konsolenumleitung" unterstützt, werden alle BIOS-Bildschirme über Ihre serielle Konsole angezeigt. GRUB bietet auch die Möglichkeit, die serielle Konsole anzuzeigen. Sie müssen also nicht per Remote-Video feststellen, ob Ihr Server wieder online ist.
Keithosu
4

Keine Sorge, Ihre aktuelle Sitzung wird nicht getrennt, auch wenn ein Problem mit der neuen Konfiguration vorliegt.

Versuchen Sie nach dem Anwenden der neuen Konfiguration und dem Neustarten von sshd ein paarmal, sich anzumelden, und sehen Sie in den Protokollen nach, ob alles in Ordnung ist.

Marco Ramos
quelle
3

Oder verwenden Sie einen Cron oder bei der Arbeit, um ihn wieder zu starten, wenn Sie sich unglücklich fühlen?

Ronald Pottol
quelle
cronoder atwürde funktionieren, um eine 'bekannte' Funktion, dh die alte Konfiguration, zurück zu kopieren und dann einen Neustart des Dienstes
durchzuführen
1

Könnten Sie nicht einfach ein kill -HUP in der PID des SSH-Dienstes ausführen? Es ist nicht sauber, aber es funktioniert


quelle
2
Oft SIGHUP ist die saubere Art, die Konfiguration eines Daemons neu zu laden.
Grawity
Es ist sauber in diesem Fall. Aus der maßgeblichen Quelle: sshd liest seine Konfigurationsdatei erneut, wenn ein Aufhängesignal empfangen wird: SIGHUP
Stéphane Gourichon
1
pkill -HUP sshdschloss meine Verbindung. Dies funktionierte:kill -HUP $(pgrep -f /usr/bin/sshd)
Tom Hale
0

Ich habe festgestellt, dass heutzutage sshdIhre Sitzungen beim Neustart nicht getrennt werden, insbesondere wenn es sich um eine Redhat-basierte Distribution handelt. Sie können jederzeit ein kleines Skript schreiben, das Ihre sshdKonfiguration automatisch aus dem Backup wiederherstellt und sshdnach 5 Minuten als cronoder atJob neu startet . Dadurch wird sichergestellt, dass Sie auch dann, wenn die Verbindung getrennt wird, wieder auf Ihren Server zugreifen können.

Riaan
quelle
-1

Ich würde nicht empfehlen, SSHD auf einer SSHD-Verbindung neu zu starten / neu zu laden. Ich habe viele Fälle erlebt, in denen sshd wegen eines Syntaxfehlers in sshd_config einfach nicht wieder gestartet werden konnte.

Obwohl alles in Ordnung mit der Konfigurationsdatei ist, ist es riskant.

Murat Arslan
quelle
9
Sie können sshd -t verwenden, um die Konfigurationsdatei vorher zu testen.
Milan Babuškov
Danke Milan, ich habe mich schnell nach einer solchen Option umgesehen, in Apache ist es das, also muss ich mich zu sehr auf das konzentriert haben.
Mitch
Ich werde Ihren Kommentar in meine Antwort aufnehmen, auch wenn sshd beendet wird, werden die offenen ssh-Sitzungen dadurch nicht beendet, aber es ist gut zu wissen, dass Ihre Syntax gültig ist, wenn Sie schwitzen.
cpbills