从 Raspberry 反向 ssh 到云服务器

从 Raspberry 反向 ssh 到云服务器

我有一个用例,其中有 6 个 Raspberry Pi 位于私人防火墙后面,我需要从本地系统访问它们。因此,我想出了一个如下所示的架构

  1. 从我的 rpi 反向 ssh 到我的云服务器的特定端口
  2. 然后从我的本地系统使用我的云服务器作为跳转箱 (SSH ProxyJump) 连接到 rpi

                        Firewall
    +--------+              |    +---------+             +----------------+
    | Rpi 1  |-> 2101/tcp ->| -> |         | <- 22/tcp - | Local System 1 |
    +--------+              |    |         |             +----------------+
                            |    |         |
    +--------+              |    |  Cloud  |             +----------------+
    | Rpi 2  |-> 2201/tcp ->| -> | Server  | <- 22/tcp - | Local System 2 |
    +--------+              |    |         |             +----------------+
       ...                  |    |         |
    +--------+              |    |         |             +----------------+
    | Rpi 6  |-> 2601/tcp ->| -> |         | <- 22/tcp - | Local System 3 |
    +--------+              |    +---------+             +----------------+
    

最初,我使用直接 SSH 命令,但遇到了一些问题,例如,一段时间后连接变得陈旧且无响应。因此,我转向了autossh。我启动了systemd来执行此操作。

autossh -Nf -M 0 -o ServerAliveInterval=120 -o ServerAliveCountMax=3 -R 2101:127.0.0.1:22 root@my-server-ip

对于我的 6 台设备来说,这很好用。但是当我尝试连接更多设备时,隧道似乎没有连接(即从 rpi 建立的隧道),但netstat -lnpt云服务器上什么都没有。

现在我需要知道这是否是解决此用例的正确方法。鉴于此,6 个 rpi 的数量将来可以增加到 20 或 30。有什么改进建议吗?

相关内容