GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Verbindungszeitüberschreitung für SSH-Server?

Ich versuche, openssh-server einzurichten, aber ich habe einige Verbindungsprobleme. Ich habe den Port auf etwas Nicht-Standard (57757) geändert und dann meinen Router so eingestellt, dass er an diesen Port weiterleitet. In meinem LAN kann ich über Port 57757 problemlos per SSH auf meinen Computer zugreifen, aber nicht im WAN.

Wenn ich mich außerhalb des LAN befinde und versuche, über einen falschen Port auf meinen Computer zuzugreifen, erhalte ich sofort die Meldung „Verbindung abgelehnt“. Mit dem richtigen Port hängt es sich jedoch einfach auf und es kommt zu Zeitüberschreitungen.

Was kann ich versuchen, um das Problem zu beheben? Ich habe Traceroute ausprobiert, aber es hat mir nichts Nützliches gesagt.

BEARBEITEN:Mir wurde klar, dass mein Problem darin bestand, dass mein Router den internen Zugriff über die WAN-IP nicht unterstützte. Ich habe ssh zu einem anderen Server gesendet und wieder eingeloggt und es hat gut funktioniert.

Akzeptierte Antwort:

Normalerweise bedeutet dies, dass Sie den Port an die falsche IP-Adresse im LAN weitergeleitet haben.

Ihr NAT-Router empfängt eingehenden Datenverkehr auf Port 57757 und sendet ihn an eine bestimmte IP-Adresse und einen bestimmten Port im LAN.

Standardmäßig filtert Ubuntu eingehende Verbindungsversuche nicht mit einer Firewall. Wenn Sie also keine Firewall-Einstellungen in Ubuntu geändert haben, wird ein Versuch, eine Verbindung zu einem beliebigen TCP-Port, 1 bis 65535, zu öffnen, entweder:

  • Akzeptiere die Verbindung, wenn der Port offen ist
  • den Verbindungsversuch ablehnen, wenn der Port geschlossen ist

Wenn Ports gefiltert wurden durch eine Firewall, dann würden Sie bekommen, was Sie sehen – keine Antwort auf einen Verbindungsversuch. Aber:

  • es sei denn, Sie haben die Firewall-Einstellungen geändert (z. B. ufw , iptables ), keine Ports werden gefiltert, und
  • In jedem Fall können Sie sich mit Port 22 im LAN verbinden, also ist er offen.

Wenn Sie einen Port an einen nicht vorhandenen weiterleiten Maschine mit einem NAT-Router, sendet sie eingehenden Datenverkehr auf diesem Port an die nicht existierende Maschine, was bedeutet, dass sie ihn in ein schwarzes Loch schickt; es wird effektiv gelöscht.

Das verursacht genau die Situation, die Sie beschrieben haben. Sie können dies also höchstwahrscheinlich beheben, indem Sie sicherstellen, dass der Port an die richtige IP-Adresse im LAN weitergeleitet wird.

Wenn sich herausstellt, dass das nicht das Problem war...

…dann müssen Sie einige Fehler beheben.

  1. Ist der für die LAN-Seite angegebene Port korrekt? Das heißt, vorausgesetzt, Sie haben die Konfiguration des SSH-Servers nicht geändert, ist Port 57757 auf der WAN-Seite so eingestellt, dass er an Port 22 weiterleitet auf dem OpenSSH-Server? (Vielleicht möchten Sie dies noch einmal überprüfen.)

  2. Möglicherweise gibt es ein Problem mit dem von Ihnen ausgewählten Port (57757). Versuchen Sie es mit einem anderen und sehen Sie, ob das besser funktioniert.

    (Wenn dies nicht der Fall ist und Sie mit dieser Anleitung fortfahren, ändern Sie sie entweder zurück oder ersetzen Sie „57757“ unten durch die neue Nummer.)

  3. Versuchen Sie, den OpenSSH-Server neu zu starten. Das kann helfen, wenn es ein Netzwerkproblem gibt. Wenn das nicht hilft, versuchen Sie auch, den Router und das Kabel-/DSL-/ISDN-Modem neu zu starten.

    Wenn Sie aus irgendeinem Grund nicht alle drei Geräte neu starten können, empfehle ich, alles neu zu starten, was Sie können. Wenn Sie den OpenSSH-Dienst nicht neu starten können, können Sie zumindest den Dienst neu starten und (wahrscheinlicher, um dies zu beheben) die Schnittstelle herunterfahren und wieder hochfahren.

    So starten Sie den OpenSSH-Server neu:

    sudo restart ssh
    

    Um die Netzwerkschnittstelle herunterzufahren, finden Sie zuerst heraus, auf welcher Schnittstelle sie sich befindet:

    ifconfig
    

    Für eine Maschine mit einer einzelnen Ethernet-Karte und/oder einer einzelnen drahtlosen Karte ist das Ethernet normalerweise eth0 und das WLAN ist wlan0 .

    Wenn Sie die kabelgebundene Ethernet-Verbindung trennen und neu starten möchten, führen Sie Folgendes aus:

    sudo ifdown eth0
    

    Führen Sie dann Folgendes aus:

    sudo ifup eth0
    

    Alternativ können Sie Folgendes ausführen:

    sudo ifconfig eth0 down
    

    Gefolgt von:

    sudo ifconfig eth0 up
    

    Wenn der Computer NetworkManager verwendet, um die Schnittstelle zu verwalten, auf der der OpenSSH-Server läuft, empfehle ich dennoch, die oben genannten Methoden auszuprobieren, aber Sie können auch versuchen, die Verbindung in NetworkManager zu trennen und erneut zu verbinden.

    Versuchen Sie bei einer Ethernet-Verbindung auch, das Kabel zu trennen und wieder einzustecken. Versuchen Sie bei einer drahtlosen Verbindung, es mit dem Hardwareschalter (falls vorhanden) aus- und wieder einzuschalten.

    Hier geht etwas Seltsames vor und nichts davon dauert sehr lange – es lohnt sich, gründlich vorzugehen, bevor Sie sorgfältigere Schritte zur Fehlerbehebung unternehmen.

  4. Wie versuchen Sie, von der WAN-Seite darauf zuzugreifen? Wenn Sie eine Maschine im LAN verwenden Um dies zu tun (nur eine Verbindung vom LAN zur WAN-IP Ihres Routers herstellen), wird dies nur von einigen Routern unterstützt. Schließlich besteht die Aufgabe eines Routers darin, den Datenverkehr zwischen der WAN- und der LAN-Seite zu leiten, nicht den Datenverkehr von einer Seite zu sich selbst zu leiten. Die Unterstützung für die Verbindung zu weitergeleiteten Ports auf der WAN-IP von innerhalb des LAN ist eigentlich eher die Ausnahme als die Regel, obwohl viele Heim-/Büro-Router diese Funktion haben.

    Wenn Sie also die Portweiterleitung von einem Host auf der WAN-Seite nicht testen, sollten Sie dies tun. Ihre Optionen dafür sind:

    • Verbinden Sie sich von der WAN-Seite. Dies funktioniert, wenn Sie dort Zugriff auf einen Computer haben, z. B. SSH-Zugriff auf einen entfernten Computer in der Schule, auf der Arbeit, im Haus eines Freundes oder ähnlichem.

    • Schließen Sie die Testmaschine zwischen an der Router und was auch immer seinen bereitstellt Internetverbindung. Wenn Sie ein Kabel-/DSL-/ISDN-Modem mit einem Ethernet-Anschluss haben und Ihr Router daran angeschlossen ist, können Sie einen Switch an das Modem anschließen und den Router an den Switch anschließen. Schließen Sie einen Computer an den Switch an. Zuerst Sehen Sie, ob diese Maschine gerade Internetzugriff erhält – heutzutage bieten viele ISPs zwei oder mehr separate IP-Adressen. Falls nicht , rufen Sie die Einrichtungsseite Ihres Routers auf und überprüfen Sie dessen WAN-IP und WAN-Subnetzmaske. Weisen Sie dann dem mit dem Switch verbundenen Computer, der sich im selben Subnetz befindet, statisch eine IP-Adresse zu.

      Dieses Verfahren hat einige Nachteile. Es ist ätzend! Außerdem ist es theoretisch möglich, dass ein ISP sein Netzwerk falsch konfiguriert, sodass die mit dem Switch verbundene Testmaschine auf das Internet zugreifen kann. (Es sei denn, es ist die Absicht Ihres ISP, Ihnen eine Verbindung mit mehr als einer WAN-IP und zu ermöglichen Sie zufällig eine WAN-IP für die Testmaschine ausgewählt haben, die Ihr ISP Ihnen zugewiesen hat, sollte der Datenverkehr zwischen ihr und einem echten WAN-Host vom ISP blockiert/gelöscht werden. Aber einige ISPs haben seltsame Praktiken, also wer weiß?) Wenn dies passiert, wird es wahrscheinlich niemandem ernsthafte Probleme bereiten (und selbst wenn, Sie haben es nur für ein paar Minuten verbunden). Es könnte jedoch möglicherweise als Versuch angesehen werden, zusätzlichen Zugriff über die Grenzen Ihres Abonnements hinaus zu erhalten, und – was noch wichtiger ist – wenn ein anderer Benutzer dieselbe IP-Adresse hat, könnte dies seine Verbindung beeinträchtigen. Daher wenn Sie diese Methode ausprobieren möchten , versuchen Sie nicht, vom Testgerät aus auf das Internet zuzugreifen, hören Sie sofort auf, wenn Sie feststellen, dass das Testgerät auf das Internet zugreifen kann, und versuchen Sie dies überhaupt nicht, wenn dies von Ihrem ISP verboten ist oder davon abgeraten wird. (Und verwenden Sie dies nicht, wenn die WAN-Seite Ihres Routers ein Büro-LAN ist, ohne vorher Ihren Netzwerkadministrator zu konsultieren. Das ist kein ISP und es wird nicht davon ausgegangen, dass Ressourcen bereitgestellt werden, um unerwünschten Zugriff zu verhindern.)

      Es gibt eine Variation dieser Technik, die manchmal geeigneter ist. Ihr Router erhält wahrscheinlich seine Verbindungsinformationen – IP-Adresse, Subnetzmaske, die IP-Adresse des Gateways (Routers) im WAN, das es verwendet, wenn es nicht weiß, wohin etwas gesendet werden soll, und Informationen über DNS-Server – von Ihrem ISP, über DHCP, über das Kabel-/DSL-/ISDN-Modem. Aus diesem Grund muss der Router an das Modem angeschlossen sein, um ihm die erforderliche Konfiguration zu geben, damit die Ergebnisse der WAN-seitigen Tests aussagekräftig sind. Aber der Router speichert diese Informationen normalerweise, solange er tatsächlich mit einem Netzwerk auf der WAN-Seite verbunden ist. Sie können also den Router, das Modem und die Testmaschine verbinden, aber dann schnell und bevor Sie irgendetwas mit der Testmaschine tun, außer sicherzustellen, dass der Switch sie als verbunden ansieht , trennen Sie das Modem.

    • Verwenden Sie einen kostenlosen Dienst im Internet, um Ihre Ports zu testen. Da das Einfügen einer Testmaschine zwischen der WAN-Schnittstelle Ihres Routers und dem Internet (oben) sehr aufwendig ist – und da ein Port als zugänglich angezeigt wird, selbst wenn er aufgrund einer Blockierung durch Ihren ISP nicht zugänglich ist (was auch für die Verbindung mit dem Router gilt). WAN-IP von der LAN-Seite) – normalerweise ist es besser, einen webbasierten Port-Scanning-Dienst zu verwenden.

      Es gibt viele Port-Scan-Dienste. (Einige verwenden den Ausdruck „Überprüfen Sie Ihre Firewall“ mit der Idee, dass die meisten Leute versuchen, sie zu blockieren anstatt ermöglichen Zugriff.) Dies ist einer. Wenn Sie diesen verwenden möchten, klicken Sie auf Fortfahren , geben Sie 57757 in das Textfeld ein und klicken Sie auf Angegebenen benutzerdefinierten Porttest verwenden . Um einen Server zum Laufen zu bringen, wollen Sie es soll „offen“ sein. „Geschlossen“ bedeutet, dass der Port erreichbar ist, aber der Server nicht läuft (und somit der Verbindungsversuch abgelehnt wurde). „Stealth“ bedeutet, dass auf den Port nicht zugegriffen werden konnte – es ist, als ob sich dort keine Maschine befände (oder als ob der Port dorthin weitergeleitet würde, wo keine Maschine ist).

  5. OK, Sie haben also festgestellt, dass es wirklich nicht über das Internet zugänglich ist. Möglicherweise können Sie es scannen (idealerweise von der WAN-Seite), um Details zu erhalten, obwohl dies oft keine hilfreichen Informationen liefert.

    Wenn Sie dies tun möchten, können Sie auf der WAN-Seite Folgendes ausführen:

    sudo nmap -sS -sV -p57757 -vv WAN-IP

    Wenn der Port als gefiltert angezeigt wird, bestätigt dies, dass dorthin gesendete Pakete wahrscheinlich nirgendwo hingehen (oder auf dem Weg blockiert/verworfen werden).

  6. Es lohnt sich zu prüfen, ob das Problem dadurch entsteht, dass der Port, der dem WAN ausgesetzt ist, sich von dem Port unterscheidet, den der Server tatsächlich abhört. Die Weiterleitung von Port 55757 im WAN an Port 22 auf der LAN-Maschine sollte funktionieren, aber vielleicht geht irgendetwas (der Server, der Client) davon aus, dass die Portnummer aus der Sicht des Servers und des Clients gleich ist.

    Vermutlich können Sie Port 22 nicht über den Router weiterleiten. Vielleicht blockiert Ihr ISP diesen Port. Aber wenn du das kannst, tu das!

    Ansonsten kann man den OpenSSH-Server eigentlich machen auf Port 57757 lauschen.

    Sichern Sie dazu die Serverkonfigurationsdatei:

    cd /etc/ssh
    sudo cp sshd_config sshd_config.old
    

    Dann bearbeiten Sie es:

    gksu gedit sshd_config
    

    Oder verwenden Sie einen Konsolen-Texteditor, wenn die Maschine keine GUI hat:

    sudo nano -w sshd_config
    

    Ganz oben in der Datei erscheint dieser Textblock:

    # What ports, IPs and protocols we listen for
    Port 22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    

    Ändern Sie einfach den Port 22 Zeile oben, also Port 57757 stattdessen.

    • Sie könnten hinzufügen einen Port, anstatt ihn zu ändern. Ich empfehle jedoch, mit der einfachsten effektiven Konfiguration zu testen.

      Siehe man sshd_config für weitere Details zur Konfiguration des OpenSSH-Servers.

    Speichern Sie die Datei, beenden Sie den Texteditor und starten Sie den SSH-Server neu mit:

    sudo restart ssh
    

    Ändern Sie nun die Portweiterleitung auf dem Router, sodass Port 57757 auf Port 57757 (nicht 22) auf dem OpenSSH-Server weitergeleitet wird, und prüfen Sie, ob er über das Internet zugänglich ist.

  7. Wenn es immer noch nicht funktioniert, prüfen Sie, ob die Firewall von Ubuntu möglicherweise tatsächlich Datenverkehr blockiert, der von außerhalb des LANs stammt.

    (Dies ist unwahrscheinlich, wenn Sie es nicht selbst so konfiguriert haben, aber wenn alle Ihre Einstellungen stimmen und keiner der obigen Schritte etwas über das Problem verraten hat, sollten Sie es überprüfen.)

    Ausführen:

    sudo iptables -L
    

    Standardmäßig sieht die Ausgabe in Ubuntu so aus:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Dies ist eine einfache zulässige Richtlinie, die im Wesentlichen dem Nichtbetreiben einer Firewall entspricht. (Tatsächlich, wenn das Netfilter-Firewall-Modul nicht in Ihren Kernel kompiliert wäre, würde sich Ihr System genauso verhalten wie mit den obigen Einstellungen, obwohl die iptables Befehl, der netfilter abfragt ’s Einstellungen, würde natürlich nicht funktionieren.)

    Wenn Ihre Konfiguration nicht so aussieht, lesen Sie man iptables um herauszufinden, was sie tun, und/oder bearbeiten Sie Ihre Frage (oder stellen Sie eine neue Frage, wenn Sie eine andere Person mit einem ähnlichen Problem sind, die dies liest), um sie einzubeziehen. Bitte beachten Sie, dass möglicherweise Ihre iptables Regeln könnten vertrauliche Informationen über Ihre Konfiguration preisgeben. In der Praxis ist dies normalerweise nicht der Fall – mit der möglichen Ausnahme von Regeln über bestimmte Hosts, die blockiert sind, oder wenn Ihre Konfiguration sehr schlecht/unsicher ist – typischerweise der Nutzen dieser Informationen für einen Angreifer, insbesondere für eine Maschine in einem Heim-/Büro-LAN hinter einem NAT-Router , ist minimal.

Verwandte:NVidia GeForce GTX970 Problem Ubuntu 16.04?
Ubuntu
  1. SSH-Verbindung aus dem LAN verweigert?

  2. Erhalten Sie Root-Rechte für Nautilus bei einer Sftp-Verbindung?

  3. Ändern Sie die Standardportnummer des SSH-Servers

  4. Richten Sie die mehrstufige Authentifizierung für SSH unter Ubuntu 20.04 ein

  5. Ändern Sie das MySQL-Timeout auf einem Server

Ubuntu 20.04 SSH-Server

Installieren Sie den SSH-Server Ubuntu 22.04

SSLH – Teilen Sie einen gleichen Port für HTTPS und SSH

So installieren Sie den SSH-Server in Ubuntu 20.04

SSH-Server

Wie stellt man über einen Remote-Server über eine SSH-Verbindung eine Verbindung zum Internet her?