答案1
我想到了几件事。
屏幕截图中的转发看起来没问题。您可以尝试将其设置为TCP
而不是TCP/UDP
,因为 ssh 是一种 TCP 协议。
动态网络
您确定使用了正确的动态更新主机名或正确的公共 IP 地址吗?要查找您的公共 IP 地址,请在 Raspberry 上打开控制台或通过 SSH(内部)进入控制台并使用curl icanhazip.com
。
sshd_配置
确保在 中/etc/ssh/sshd_config
,sshd 监听正确的接口(如果您有多个接口)。用 注释掉该行ListenAddress a.b.c.d
并#
重新启动服务(/etc/init.d/sshd restart
或systemctl restart sshd
,取决于您的发行版)。编辑:抱歉,您已经说过了。
编辑:
路由
如果您无法从 获得输出curl icanhazip.com
,则可能是您的 Raspberry 不知道如何访问互联网。因此它无法从外部回复您的连接尝试。添加路由,例如使用ip route add default via <your modem's IP address>
并重试。
iptables
确保您的 Raspberry 内部防火墙允许来自外部地址的 SSH。iptables -S
将为您提供规则列表。查找类似以下行
-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
在这种情况下,使用iptables -P INPUT ACCEPT
或允许所有传入流量iptables -I INPUT -p tcp --dport 22 -j ACCEPT
。
DS-Lite(双栈精简版)
在家庭网络内部,您使用 IPv4 地址。在您的示例中为 192.168.0.x。但是,您的 ISP 可能在其网络中使用 IPv6。路由器将您的 IPv4 地址转换为 IPv6。这通常会导致无法从远程连接到您的家庭网络。
如果curl icanhazip.com
为您提供了 IPv6 地址,例如2001:a61::35:2
,它可能是一个指示器。此外,也许您的 C6300 将显示有关该信息。(我使用 AVM Fritz!Box 7360,它明确输出“Fritz!Box 使用 DS-Lite 隧道”)。
为了 100% 确定,请致电您的 ISP。
编辑:
如果您位于 DS-Lite 隧道后面,则可以考虑使用以下选项从远程连接回家:
- 要求您的提供商/ISP 将您的线路切换到非 DS-Lite 线路
- 使用
autossh
将您的家用计算机连接到另一台主机,例如在工作时(事先询问您的雇主)、您的 Web 服务器、您的 VPS。配置autossh
为创建反向隧道,例如。然后,您可以通过 ssh 连接到 yourvps.com 并从那里通过 ssh 回到家中。ssh -R 10000:localhost:22 [email protected]
ssh -p 10000 user@localhost
编辑:
Netgear C6300 特定
直到固件版本 2.01.14 为止,固件中似乎存在一个错误,只有激活“高级配置”>“WAN 设置”中的“响应 Internet WAN 端口上的 Ping”选项时,打开的端口才会可见。