所以,我有多个 Raspberry Pi 4B (8) 通过以太网电缆连接到我的 FritzBox。所有 Pi 都在其设置中激活了 SSH,并且可以通过键入“ssh [email protected]”在本地网络中进行 SSH。我为我的路由器设置了 dynDNS 服务,因此我无需知道确切的 IP 地址即可访问它。那也很好用。
然后我使用 FritzBox 的“允许访问”选项将端口 22 和 3389 转发到其中一个 RPi。现在我可以在该桌面上使用 SSH 和 MS 远程桌面。
问题:所有其他 RPi 都有无头 Raspberry OS Lite 安装,我还需要来自 Internet 的 SSH。但是由于第一个 RPi 已经在使用端口 22,所以我不能使用任何其他带有端口 22 的 RPi。
我在互联网上多次阅读过一种称为端口重定向的方法。但没有人真正容易地解释这一点。所以,我必须找到一种方法来做到这一点:
路由器
|-> 外部端口 2200 -> Pi Nr 的端口 22。0
|
|-> 外部端口 2201 -> Pi Nr 的端口 22。1
|
|-> 外部端口 2202 -> Pi Nr 的端口 22。2
|
|-> 外部端口 2203 -> Pi Nr 的端口 22。3
但我不知道它是如何工作的;D
我必须在 RPi 上编辑哪个配置文件,或者我必须在路由器上更改哪些设置才能实现这一点?
谢谢你的回答:)
(PS:我是一个网络菜鸟。我一直在为 PC 编写 Java 软件,有时是 Discord Bots 作为一种爱好,现在已经有大约 2 年了。但我不知道所有互联网的东西是如何工作的,我想学习它 XD)
在大多数路由器上,允许外部访问内部 IPv4 主机实际上是相同的功能,无论端口是否需要更改。如果您的 Raspberry Pi 有一个私有 IP 地址,那么路由器无论如何都必须执行 NAT,因此“端口重定向”是其中的一部分,并不是真正独立的东西。
在您的情况下,如果您在同一“允许访问”部分中选择“其他应用程序”,FRITZ!Box 似乎允许您输入不同的“外部”和“内部”端口。
通过在谷歌上找到的屏幕截图,这将是:
(该字段被标记为 IPv4 特定的,因为在 IPv6 中,您将直接连接到 Pi 自己的地址而不是路由器的地址,因此“外部”和“内部/到设备”端口之间不会有任何分离。)
通常它是一个或另一个,这取决于你想要什么。
这可能就是您所说的“端口重定向”。它需要路由器转换端口,并且不需要对 Pi 本身进行任何更改。
它通常特定于 IPv4;虽然在 IPv6 中技术上仍然可行,但它被认为是“应该避免”的事情。(这主要是因为在 IPv6 中,每个Pi 都有自己的外部地址,因此端口 22 冲突问题将没有实际意义。)
在 FRITZ!Box 上,这似乎隐藏在您已经使用的同一“允许访问”页面中的“其他应用程序”选项下。
这不需要从路由器进行任何重写(在 IPv4 和 IPv6 中工作相同),但需要 Pi 上的 SSH 服务来侦听相应的端口。
在 Linux 上,这是一个
Port
选项/etc/ssh/sshd_config
——您可能应该添加两次,默认端口 22 和自定义端口 2200。你当然可以两者都做,例如将外部端口 2200 重写为 Pi 端口 3300,但这只是不必要的。
还可以选择根本不让其他 Pi 可以从外部访问。相反,您可以使用
ssh -J
通过第 0 个 Pi 连接到所有这些,例如ssh -J public.ip lan.ip.pi2
.