Ich habe meinen Standard-SSH-Port auf meinem Heimserver geändert (in der Datei /etc/ssh/sshd_config
Datei) auf Port 54747, dann ssh
neu gestartet und sshd
Services (ich bin mir nie sicher, welcher, also habe ich beides gemacht, nur um sicher zu gehen). 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 dann meinen Server neu. Als ich versuchte, mich wieder per SSH einzuloggen (auf Port 54747), erhielt ich einen Verbindungsverweigerungsfehler.
Aus irgendeinem Grund habe ich versucht, SSH auf dem Standardport zu verwenden, 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 ssh
neu gestartet und sshd
Dienste, und es kehrte zum „normalen“ Verhalten zurück (ssh auf Port 54747). Ich habe erneut versucht, neu zu starten, und die Verbindung wurde erneut abgelehnt…
Weiß jemand, was ich falsch gemacht habe?
Zusätzliche Details :
- Ubuntu 16.04.2 LTS
- Server wird auch ein HTPC verwendet, mit einer offenen Sitzung (gleicher Benutzer wie SSH) auf meinem Fernseher
- Ich verwende SSH mit dem RSA-Schlüssel meines Laptops und habe die Passwortauthentifizierung deaktiviert
- Früher habe ich mit
sudo reboot -h now
neu gestartet , aber nach der Suche stellte ich fest, dass einige Leute davon abrieten, also versuchte ich es mitsudo reboot
, aber keine Unterschiede
BEARBEITEN
Ablauf der Ereignisse :
- Ändern Sie den SSH-Port von 22 in 54747 in
/etc/ssh/sshd_config
- Starten Sie ssh- und sshd-Dienste neu
- Aktuelle SSH-Sitzung beenden
- SSH wieder erfolgreich auf Port 54747
- Neu starten
- SSH-Verbindungsfehler auf Port 54747, aber erfolgreich auf Port 22
- Starten Sie ssh- und sshd-Dienste neu
- SSH wieder erfolgreich auf Port 54747, Verbindungsfehler auf Port 22
- Neu starten und zurück zu 6 gehen
BEARBEITEN 1 : netstat
Ausgabe
[email protected]:~$ sudo netstat -lntp | grep :54747
[email protected]:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
BEARBEITEN 2 : service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
BEARBEITEN 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:ATLAS ist der Hostname des Remote-Servers, 192.168.1.27 ist die LAN-IP meines Laptops, und der Befehl wurde zwischen den Schritten 6 und 7 ausgeführt.
ufw status
Status: inactive
BEARBEITEN 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: [email protected]/1 sshd
Akzeptierte Antwort:
ssh kann je nach Konfiguration von systemd „socket-aktiviert“ werden, was bedeutet, dass zunächst systemd den Listening-Port einrichtet und sshd nur gestartet wird, wenn sich ein Client zum ersten Mal verbindet. Dies soll die Startzeit beschleunigen:Service-Daemons werden nur bei Bedarf gestartet.
Verwandte:Wie zeichnet man den Bildschirm in Ubuntu auf?
Dies bedeutet jedoch, dass Sie systemd auch auf den passenden Port konfigurieren müssen. Sie finden die Systemkonfiguration in /lib/systemd/system/ssh.socket
die ListenStream=22
auflistet . Um dies zu überschreiben, erstellen Sie eine Datei /etc/systemd/system/ssh.socket.d/port.conf
(Erstellen des Verzeichnisses ssh.socket.d
falls erforderlich), die Folgendes enthält:
[Socket]
ListenStream=
ListenStream=54747
Ändern Sie die Nummer auf den gewünschten Port. Der erste leere Eintrag löscht den vorherigen Standardwert, und der nachfolgende Eintrag fügt den neuen hinzu. Dies überschreibt die Standardeinstellung, die in /lib/systemd/system/ssh.socket
geliefert wird und muss zusätzlich zu erfolgen Ändern von /etc/ssh/sshd_config
.
Führen Sie dann sudo systemctl daemon-reload
aus um systemd über Ihre Änderungen zu informieren, und sudo systemctl reload ssh
wenn Ihr ssh-Daemon zuvor ausgeführt wurde.