从外部访问时 SSH 延迟

从外部访问时 SSH 延迟

更新:我刚刚发现 ssh 命令选项(而不是用它发送命令的交互式 shell)有点作用。

例子:

ssh pi@domainname ls

可以工作并打印内容,但是

ssh pi@domainname ls && echo hello

只打印 ls 但不打印 echo 它只是卡在那里


我遇到了一个奇怪的问题。当我通过 ssh 登录本地网络内的 raspberry pi 时,它工作正常。但是当我尝试从外部访问它时,它会显示密码弹出窗口,并且如果输入了上次登录的登录消息也是如此。但 shell 不会显示。建立连接大约需要 10 到 30 分钟,然后我可以输入最多 4 个命令,然后它再次冻结。

现在我以为是 Raspberry Pi 的问题,但我的 NAS 也一样,所以我猜是路由器的问题?我已将路由器设置为将端口转发到 ssh 端口 22。它是 Speedport smart 3。

我不知道是什么原因导致了路由器中 ssh 的问题,但它多年来一直运行良好,大约一个月前才开始出现问题。

提前致谢

编辑:

因为显然我的设置不清楚:

路由器 -> 交换机 -> 通过有线局域网连接的多个设备(Windows PC、树莓派、NAS)

这些设备均未连接 wifi,pi 和 NAS 没有 wifi 适配器。路由器有一个端口重定向到 raspberry 和 NAS,端口 1234/5 到 22

在本地网络中,ssh 工作正常。当通过互联网访问时,则不行,

但是:只有在 ssh 很长时间不显示 shell 之后,ssh 密码消息和登录消息才能正常工作。

我的猜测是路由器以某种方式不让 ssh 协议的某些部分通过。

我现在的解决方法是在 pi 上建立一个网站,以便执行我主要需要的 wol。

答案1

我认为我们对您的设置了解不够,无法回答您的问题。但是,有一些一般准则:

首先,断开测试不需要的任何网络组件,并使用可靠的电缆连接代替 WiFi。也就是说,完全关闭路由器中的 WiFi。然后使用已知良好的电缆将 RasPI 直接连接到路由器,并断开路由器上的任何其他设备。

在 RasPI 的配置中,为 RasPI 分配一个静态 IP 地址(以及静态名称服务器、网关等),并关闭路由器中的 DHCP。仔细检查路由器中的端口转发是否指向正确的 IP 地址(您手动分配给 RasPI 的 IP 地址)。

然后从外部重复 SSH 测试。如果现在可以了,您可以尝试逐一恢复上述步骤。如果仍然不起作用,请尝试从朋友那里借用路由器几个小时(作为交换,您可以为他做一份美味的披萨,不是吗?),然后再次测试。如果它与另一个路由器一起工作,您可能已经确定了罪魁祸首。

但是,即使成功了,您也应该再做一段时间的测试,至少如果您通常通过 WiFi 将 RasPI 连接到路由器的话。我可以想象(虽然不太可能)邻居的设备使用与您的路由器相同的 WiFi 信道并干扰通信。在这种情况下,我无法解释为什么当您在家时连接到 RasPI 时它会起作用,但正如我上面所说,我们对您的设置了解不够。例如,如果您使用笔记本电脑通过 WiFi 直接连接到 RasPI,那么该笔记本电脑可以使用除路由器以外的其他信道,可能会提供更强的信号,或者可能会有更好的接收效果。

相关内容