Ich habe meinen Standard-SSH-Port auf meinem /etc/ssh/sshd_config
Heimserver (in der Datei) in Port 54747 geändert und dann die Dienste ssh
und neu gestartet sshd
(ich bin mir nicht sicher, welchen, also habe ich beide aus Sicherheitsgründen ausgeführt). Um meine Konfiguration zu testen, habe ich mich ohne Probleme abgemeldet und wieder angemeldet.
Ein paar Tage später installierte ich apt updates und startete meinen Server neu. Als ich versuchte, SSH wieder einzurichten (auf Port 54747), wurde mir ein Verbindungsfehler verweigert.
Aus irgendeinem Grund habe ich versucht, SSH auf Standard-Port, und es hat funktioniert! Ich ging zurück, um die sshd_config zu überprüfen, aber sie hatte immer noch den benutzerdefinierten Port. Also habe ich die ssh
und sshd
-Dienste neu gestartet und es kam wieder zu "normalem" Verhalten (ssh auf Port 54747). Ich habe erneut versucht, einen Neustart durchzuführen, und die Verbindung wurde erneut verweigert.
Weiß jemand was ich falsch gemacht habe?
Zusätzliche Details:
- Ubuntu 16.04.2 LTS
- Der Server wird auch als HTPC mit einer offenen Sitzung (derselbe Benutzer wie SSH) auf meinem Fernseher verwendet
- Ich verwende den RSA-Schlüssel meines Laptops für SSH und habe die Kennwortauthentifizierung deaktiviert
- Früher habe ich einen Neustart durchgeführt
sudo reboot -h now
, aber nach der Suche stellte ich fest, dass es von einigen Leuten nicht empfohlen wurde, also habe ich es versuchtsudo reboot
, aber keine Unterschiede
EDIT Reihenfolge der Ereignisse:
- Ändern Sie den SSH-Port von 22 auf 54747 Zoll
/etc/ssh/sshd_config
- Starten Sie die Dienste ssh und sshd neu
- Aktuelle SSH-Sitzung beenden
- SSH wurde erfolgreich auf Port 54747 zurückgespielt
- Starten Sie neu
- SSH-Verbindungsfehler an Port 54747, aber erfolgreich an Port 22
- Starten Sie die Dienste ssh und sshd neu
- SSH wurde erfolgreich an Port 54747 wiederhergestellt, Verbindungsfehler an Port 22
- Starten Sie neu und kehren Sie zu 6 zurück
EDIT 1: netstat
Ausgabe
rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDIT 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDIT 3: lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
Als Referenz ist ATLAS der Hostname des Remoteservers, 192.168.1.27 die LAN-IP meines Laptops, und der Befehl wurde zwischen den Schritten 6 und 7 ausgeführt
ufw status
Status: inactive
EDIT 4: ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: rgo@pts/1 sshd
quelle
Port 10285
. Google zeigt einige Ergebnisse für 54747 ... (3) Auch der SSH-Server kann mit mehreren Ports gleichzeitig arbeiten. Erstellen Sie zwei separate Anweisungen für jeden Port:Port 22
undPort 54747
öffnen Sie dann nur die zweite in der Firewall. (4) Sie können dieMatch LocalPort
Direktive versuchen , die am Anfang von stehtsshd_c
.Antworten:
ssh kann je nach Konfiguration von systemd "Socket-aktiviert" werden. Dies bedeutet, dass anfangs systemd den Listening-Port einrichtet und sshd nur gestartet wird, wenn ein Client zum ersten Mal eine Verbindung herstellt. Dies beschleunigt die Startzeit: Service-Daemons werden nur bei Bedarf gestartet.
Dies bedeutet jedoch, dass Sie systemd auch für den entsprechenden Port konfigurieren müssen. Die Systemkonfiguration finden Sie in
/lib/systemd/system/ssh.socket
den ListenListenStream=22
. Um dies zu überschreiben, erstellen Sie eine Datei/etc/systemd/system/ssh.socket.d/port.conf
(erstellen Siessh.socket.d
bei Bedarf das Verzeichnis ), die Folgendes enthält:Ändern Sie die Nummer in den gewünschten Anschluss. Der erste leere Eintrag löscht den vorherigen Standard und der folgende Eintrag fügt den neuen hinzu. Dies überschreibt die Standardeinstellung in
/lib/systemd/system/ssh.socket
und muss zusätzlich zu den Änderungen durchgeführt werden/etc/ssh/sshd_config
.Führen
sudo systemctl daemon-reload
Siesudo systemctl reload ssh
dann den Befehl aus , um systemd über Ihre Änderungen zu informieren und festzustellen , ob Ihr ssh-Daemon zuvor ausgeführt wurde.quelle
/etc/systemd/system/ssh.socket.d/port.conf
wird immer noch ignoriert und dem Neustart setzt Port 22. ist der Dateiname relevant? Unter Ubuntu kann keine gute Dokumentation zu Systemd-Überschreibungen gefunden werden ..conf
. Weitere Informationen zum Überschreiben von Konfigurationsdateien durch systemd-system.conf (5) .systemctl status ssh.socket
zu sehen, ob es aktiviert ist und was es abhört.ListenStream=
Leitung vor dem benutzerdefinierten Port verhinderte dies, nicht sicher warum. Vielleicht "löscht" dies dieListenStream=22
Einstellung in der Standardeinstellung/lib/systemd/system/ssh.socket
? Seltsame Art, Einstellungen zu überschreiben. Vielleicht lohnt es sich, dies zur Antwort hinzuzufügen?Überprüfen Sie Ihre Porteinstellungen in der
/etc/ssh/sshd_config
Datei. Stellen Sie sicher, dass Sie als sudo oder als Benutzer in der sudo-Gruppe arbeiten. Alles, was Sie tun müssen, um den Port einzustellen, ist, in einem LeitungstypPort 54747.
Jetzt den ssh-Dienst neu zu starten, indem Sieservice sshd restart.
ausführen. Vergewissern Sie sich dann, dass ssh diesen Portsudo netstat -lntp | grep ssh.
überwacht , indem Sie Reboot ausführen und testen.Überprüfen Sie auch Ihre Netzwerkeinstellungen. Wenn Sie sich in einem Unternehmensnetzwerk befinden, vergewissern Sie sich, dass Sie sich im richtigen VLAN befinden.
quelle
Port 22
aufPort 54747
nur geändert . Auch der von Ihnen angegebene Netstat hatte keine Ausgabe. Ich habe ein modifiziertes in mein OPssh -i key.txt user@ipaddress -p 54747
. Überprüfen Sie auch, ob an diesem Port etwas anderes empfangsbereit ist. Tunsudo lsof -i | grep ssh
. Sie können auch Ihre Firewall überprüfen, um sicherzustellen, dass sie nichts blockiert. Do:sudo ufw status
.shutdown -r now
. Probieren Sie es aus und teilen Sie uns die Ergebnisse mit. Siehe diesen Artikel als Referenz: askubuntu.com/questions/483670/…sudo reboot -h now
"Sudo-Neustart"Manchmal laufen die Dinge einfach schief. Wenn ich bei dir wäre, würde ich versuchen mit:
quelle
cp
Befehl ist nur für den Fall, in der Regel berührt Neuinstallation Konfigurationsdateien nicht.ssh ist der Client-Prozess, der eine Benutzersitzungsverbindung zum ssh-Server vermittelt und aufrechterhält. sshd ist der Daemon, der auf dem SSH-Server ausgeführt wird, um SSH-Verbindungsanfragen abzuhören und zu authentifizieren.
Die Konfigurationsdatei auf dem sshd-Server, die beim Starten des sshd-Dienstes gelesen wird (für deren Bearbeitung sudo-Berechtigungen erforderlich sind), lautet
Der Dienst sollte aus starten
Um sshd neu zu starten, müsste die Datei sshd_config erneut gelesen werden
Um zu sehen, welchen Port der sshd-Daemon abhört, sowie weitere hilfreiche Informationen zum Typ des ssh-Servers
Führen Sie diese Schritte in der angegebenen Reihenfolge aus:
Starten Sie den SSH-Server neu
Öffnen Sie eine Terminalsitzung auf dem SSH-Server (keine SSH-Verbindung)
Art
hostname
Wenn der Hostname den Namen des SSH-Servers (in diesem Fall Atlas) nicht zurückgibt, wiederholen Sie den vorherigen Schritt korrekt.
grep Port /etc/ssh/sshd_config
- Notieren Sie die Portnummer. Sollte der sein, den Sie angegeben habensudo service sshd status
Wenn der Status angibt, dass er aktiv ist und den von Ihnen angegebenen benutzerdefinierten Port ausführt und überwacht, sind Sie in diesem Punkt gut aufgehoben. Andernfalls ruft der Dienststart möglicherweise nicht die von Ihnen geänderte Datei sshd_config auf, sondern eine andere Konfigurationsdatei, die Standardinformationen enthält. Wenn der Dienst nicht gestartet wurde ("tot" und nicht aktiv und läuft "), ist dies ein anderes Problem als das, worüber Sie gefragt haben.
Diese Schritte identifizieren wahrscheinlich die Grundursache des Problems, nach dem Sie fragen.
Zu Testzwecken und zur Vereinfachung: Auf der Clientseite würden Sie von einer Terminalsitzung aus wie folgt ssh auf den ssh-Server übertragen
Aufgrund des OP-Feedbacks vermute ich, dass sshd beim Booten nicht startet, aber beim manuellen Aufrufen korrekt startet. Erfolgreiche SSH-Verbindungen über Port 22 können durchaus NICHT mit dem SSH-Server verbunden sein, sondern mit etwas anderem (z. B. localhost). Um dies zu beweisen oder zu entlarven, geben Sie nach dem Herstellen einer Verbindung über ssh Folgendes ein
Basierend auf dem, was OP sagt, wird der Hostname vermutlich nicht der SSH-Server-Atlas sein.
Um dies weiter zu isolieren, müssen Sie nach dem Neustart des SSH-Servers, bevor Sie weitere Schritte ausführen , eine Terminalsitzung auf dem SSH-Server (Atlas) durchführen
Wenn dies fehlschlägt, wie es sollte, dann
Wenn dies auch nicht funktioniert, werden die beim Ausführen erzielten Ergebnisse bestätigt
quelle
ssh -p <PORT> <USER>@<IP>
, mit meinem privaten Schlüssel zum Agenten hinzugefügt.Wahrscheinlich haben Sie gerade mit Y geantwortet, als apt Unterschiede zwischen Ihrer sshd_config und der des Pakets feststellte. Sie werden gefragt, ob Sie die Version des Paket-Mantainers installieren oder behalten möchten.
quelle
Mögliche Ursachen, an die ich denken kann
/usr/lib/systemd/system/sshd.socket
: https://www.vultr.com/docs/how-to-change-ssh-port-on-coreosquelle
find /etc/ -iname "*ssh*"
, um nach weiteren Hinweisen zu suchen.