Ich habe einen Netgear C6300 (Firmware-Version 2.01.14) Router/Modem und versuche mit aller Kraft, mich extern per SSH mit meinem Raspberry Pi zu verbinden. Hier ist mein Port-Forwarding-Setup:
Ich kann intern SSH verwenden ssh 192.168.0.84
, aber extern auf canyouseeme.com erhalte ich die Meldung „Fehler: Ihr Dienst konnte auf Port (22) nicht angezeigt werden. Meine sshd_config enthält die Zeile Port 22
und die ListenAddress
Zeilen sind auskommentiert. Mit anderen Worten, ich habe diese Datei nicht berührt. Was ist hier los?
Antwort1
Mir fallen mehrere Dinge ein.
TCP
Die Weiterleitung in Ihrem Screenshot sieht in Ordnung aus. Sie könnten versuchen, sie auf statt einzustellen TCP/UDP
, da SSH ein TCP-Protokoll ist.
dyndns
Sind Sie sicher, dass Sie den richtigen dynamisch aktualisierten Hostnamen oder Ihre richtige öffentliche IP-Adresse verwenden? Um Ihre öffentliche IP-Adresse herauszufinden, öffnen Sie eine Konsole auf dem Raspberry oder greifen Sie per SSH (intern) darauf zu und verwenden Sie curl icanhazip.com
.
sshd_config
Stellen Sie in sicher /etc/ssh/sshd_config
, dass sshd auf die richtige Schnittstelle hört, falls Sie mehrere haben. Kommentieren Sie die Zeile ListenAddress a.b.c.d
mit einem aus #
und starten Sie den Dienst neu ( /etc/init.d/sshd restart
oder systemctl restart sshd
, abhängig von Ihrer Distribution). Edit: Entschuldigung, das haben Sie bereits gesagt.
Bearbeiten:
Routenplanung
Wenn Sie von keine Ausgabe erhalten curl icanhazip.com
, liegt dies wahrscheinlich daran, dass Ihr Raspberry nicht weiß, wie er ins Internet kommt. Er kann also nicht auf Ihren Verbindungsversuch von außen antworten. Fügen Sie eine Route hinzu, z. B. mit ip route add default via <your modem's IP address>
und versuchen Sie es erneut.
iptables
Stellen Sie sicher, dass Ihre Raspberry-interne Firewall SSH von externen Adressen zulässt. iptables -S
gibt Ihnen eine Liste mit Regeln. Suchen Sie nach Zeilen wie
-A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
# SSH only allowed from the internal network, if iptables policy INPUT is DROP
Lassen Sie in diesem Fall den gesamten eingehenden Datenverkehr mit oder iptables -P INPUT ACCEPT
zu iptables -I INPUT -p tcp --dport 22 -j ACCEPT
.
DS-Lite (Dual-Stack Lite)
Intern, in Ihrem Heimnetzwerk, verwenden Sie IPv4-Adressen. In Ihrem Beispiel 192.168.0.x. Ihr ISP verwendet in seinem Netzwerk jedoch möglicherweise IPv6. Der Router übersetzt Ihre IPv4-Adressen in IPv6. Dies führt normalerweise dazu, dass Sie von einem Remote-Zugriff auf Ihr Heimnetzwerk keine Verbindung herstellen können.
Wenn curl icanhazip.com
Sie beispielsweise eine IPv6-Adresse erhalten haben, 2001:a61::35:2
könnte dies ein Hinweis sein. Außerdem zeigt Ihr C6300 möglicherweise Informationen dazu an. (Ich verwende eine AVM Fritz!Box 7360 und sie gibt explizit aus: „Fritz!Box verwendet einen DS-Lite-Tunnel“).
Um 100 % sicher zu sein, rufen Sie Ihren ISP an.
Bearbeiten:
Falls Sie sich hinter einem DS-Lite-Tunnel befinden, bieten sich folgende Möglichkeiten an, um dennoch von der Ferne eine Verbindung nach Hause herzustellen:
- Bitten Sie Ihren Provider/ISP, Ihre Leitung auf eine Nicht-DS-Lite-Leitung umzustellen
- Verwenden Sie es
autossh
, um Ihren Heimcomputer mit einem anderen Host zu verbinden, z. B. bei der Arbeit (fragen Sie vorher Ihren Arbeitgeber), Ihrem Webserver, Ihrem VPS. Konfigurieren Sie esautossh
so, dass ein Reverse-Tunnel erstellt wird, z. B. . Dann können Sie per SSH auf yourvps.com zugreifen und von dort per SSH nach Hause gehen .ssh -R 10000:localhost:22 [email protected]
ssh -p 10000 user@localhost
Bearbeiten:
Netgear C6300 speziell
In den Firmwares bis zur Firmware-Version 2.01.14 scheint ein Fehler vorzuliegen, der geöffnete Ports nur dann sichtbar macht, wenn die Option „Auf Ping am Internet-WAN-Port antworten“ unter „Erweiterte Konfiguration“ > „WAN-Setup“ aktiviert ist.