Dies ist eine Erweiterung des SSH-Ports, um von überall auf meinen Heimcomputer zuzugreifen
Ich habe die dort genannten Dinge ausprobiert, kann aber ssh
meine Maschine nicht erreichen.
Netgear-Router-Einstellungen für die Portweiterleitung:
Start Port: 22
End Port: 22
Server IP Address: IP address of by FreeBSD box
/etc/ssh/sshd_conf
meiner FreeBSD-Box:
PasswordAuthentication yes
AllowUsers root
X11Forwarding yes
AllowTcpForwarding yes
Wie ich versuche, eine Verbindung herzustellen:
Ich habe mich angemeldet dyndns.com
und eine URL erhalten, die meiner externen IP-Adresse zugeordnet ist.
Von einem anderen Computer in meinem Heimnetzwerk aus mache ich Folgendes:
ssh -l root my_dyndns_ip
Das ist nur eine Zeitüberschreitung.
Andererseits kann ich my_dyndns_url
erfolgreich pingen .
Debugging :
Wie kann ich das beheben, damit ich ssh
von überall nach my_dnydns_url
?
Ich habe versucht, die Protokolle meines Netgear-Routers zu überprüfen, aber bei einem fehlgeschlagenen SSH-Versuch wurde keine Anmeldung auf dem Router generiert.
Ich habe auch nachgesehen /var/log/messages
, konnte aber nichts finden.
Bearbeiten: 0 Ausführen von ssh im ausführlichen Modus (gemäß @jasonwryan vorgeschlagen):
Ich bemerke eine seltsame Sache: Wenn ich ssh mit der von dyndns.com bereitgestellten URL mache, wird versucht, eine Verbindung zu einer anderen IP-Adresse herzustellen als der, die ich von whatismyip.com erhalte. Ist das nicht falsch?
Edit: 1 Problem mit Dyndns ist jetzt gelöst.
Wenn ich jetzt versuche, ssh zu verwenden, tritt eine Zeitüberschreitung auf und ich erhalte die Fehlermeldung: Zeitüberschreitung bei Verbindung
Edit: 2 Hat iptables oder NAT etwas damit zu tun?
Bearbeiten: 3
Ich begann ssh
mit -d option
dem Erfassen von Debug-Nachrichten.
Wenn ich von einem anderen Computer in wlan auf die freebsd-Box ssh, funktioniert es einwandfrei und ich kann Protokolle sehen.
Aber wenn ich auf eine externe IP ssh (die das an meine freebsd-Box weiterleiten sollte), sehe ich nicht einmal Protokolle - das heißt, die Anfrage erreicht nicht einmal die freebsd-Box. Und es läuft ab.
quelle
ssh -vvv ...
host my_dyndns_ip
zeigt?Antworten:
Ich denke, Ihr Problem liegt nicht in der Portweiterleitung, sondern in einer anderen Option in der NAT-Konfiguration im Router.
Stellen Sie zunächst sicher, dass Sie bei Verwendung Ihrer LAN-IP erfolgreich SSH von einem anderen Computer im Netzwerk ausführen können. Dies stellt sicher, dass SSH überhaupt funktioniert.
Zweitens testen Sie von einem anderen Computer außerhalb des Netzwerks mit der öffentlichen IP. Dies stellt sicher, dass die Portweiterleitung funktioniert.
Drittens testen Sie von demselben Computer außerhalb des Netzwerks und verwenden Sie die DynDNS-URL. Dies stellt sicher, dass DynDNS ordnungsgemäß funktioniert.
Wenn all dies erfolgreich ist, ist nichts falsch an Ihrer Konfiguration (was ich für richtig halte) und Ihr Problem besteht darin, nur von innerhalb des Netzwerks auf die öffentliche IP (entweder direkt oder über DynDNS) zuzugreifen . Dies bedeutet, dass auf Ihrem Router die NAT-Reflektion aktiviert sein muss (falls möglich), um interne Anforderungen so weiterzuleiten, als wären sie externe Anforderungen für die öffentliche IP.
quelle
Lauscht Ihr SSHD-Server auf Port 22? Fügen Sie Folgendes hinzu:
zu Ihrer Konfiguration.
Wenn dies nicht funktioniert, versuchen Sie, einen Port über 1024 weiterzuleiten (einige ISPs erlauben keinen Nicht-Business-Teilnehmerverkehr auf Ports unter 1024). Stellen Sie außerdem sicher, dass Sie in diesem Fall die Zeile in der Conf ändern, von der ich Ihnen gerade erzählt habe, dass sie denselben Wert wiedergibt.
quelle
Versuchen Sie, den SSH-Port auf 443 zu ändern. Wenn Sie eine Verbindung zu diesem Port herstellen können, besteht ein Proxy zwischen dem Client und Ihrem Heim-PC
Protokollieren Sie alle verworfenen und weitergeleiteten Pakete in Ihrer Firewall. Dadurch können Sie möglicherweise falsche Weiterleitungsregeln finden
Versuchen Sie, Ihre externe IP mit nmap (oder einem anderen Tool) zu scannen (Ports <1024). Bei der Firewall-Protokollierung sollten unterbrochene Verbindungen angezeigt werden, und auf der Clientseite sollten geöffnete Ports angezeigt werden
Erstellen Sie vom Client aus eine Traceroute zu Ihrem Heim-PC. Gibt es unerwartete Hosts zwischen diesen Hosts? Sind diese Forward-Ports korrekt?
quelle
Versuchen Sie mit tcptraceroute zu debuggen, wenn Sie zuerst zum Remote-Port wechseln können. Wenn ein Computer den Port blockiert, sehen Sie dies in der Ausgabe. Versuchen Sie, netstat -atun zu verwenden, um die offenen Ports / Verbindungen auf beiden Computern anzuzeigen.
quelle