Ssh reverso para servidor Cloud do Raspberry

Ssh reverso para servidor Cloud do Raspberry

Tenho um caso de uso em que tenho 6 dos meus raspberry pi atrás de um firewall privado e preciso acessá-los em meus sistemas locais. Então eu criei uma arquitetura mostrada abaixo

  1. Do meu ssh reverso RPI para uma porta específica do meu servidor em nuvem
  2. E do meu sistema local conecte-se aos RPIs usando meu servidor em nuvem como um jumpbox (SSH ProxyJump)

                        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 |
    +--------+              |    +---------+             +----------------+
    

Inicialmente, usei comandos SSH diretos, mas me deparei com problemas como a conexão ficar obsoleta e sem resposta após um período de tempo. Então, mudei para autossh. Comecei um systemdpara fazer esta operação.

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

Isso funciona bem, para meus 6 dispositivos. Mas quando tento conectar mais dispositivos, o túnel não parece estar conectando (ou seja) o túnel estabelecido a partir do rpi, mas nada no netstat -lnptservidor em nuvem.

Agora preciso saber se esta é a abordagem correta para resolver este caso de uso. Dado isso, esta contagem de 6 RPIs pode ir até 20 ou 30 no futuro. Alguma sugestão para melhoria?

informação relacionada