Eu tenho vários raspberry pi executando o Arch Linux (sem GUI) nos quais preciso acessar. Esses pis estão atrás de firewalls em cada local exclusivo. Atualmente eu uso o openvpn para me conectar a eles, mas os custos desse sistema são caros por licença. Eu uso o servidor de acesso deles.
Como resultado, estou tentando projetar e configurar um sistema que me permita fazer login no meu servidor VPN (vps) e executar um comando para procurar um nome específico (OfficeDevice1991), como: customcommandsearch "OfficeDevice1991"
e, em seguida, retorna o IP endereço da máquina ou algo que eu possa usar para fazer SSH. Também estou procurando a capacidade de executar um comando para listar todos os dispositivos conectados ativos. Ele lista o IP, o nome e talvez há quanto tempo está ativo.
Para esse objetivo, é claro que preciso criar algo que inclua o nome do dispositivo (neste caso, OfficeDevice1991) e, em seguida, esse pi poderá se conectar ao meu servidor público vps. No servidor público, posso fazer login e pesquisar todos os dispositivos conectados a ele e retornar as informações necessárias para o ssh.
Tenho procurado o SSH reverso e, até agora, consegui conectar um dos meus pi de teste e acessá-lo a partir do meu vps usando os seguintes comandos:
IP:
ssh -fN -R 12345:localhost:22 -i /publickeyfile useraccount@ip //Pi's command to connect to vpn
VPS:
ssh -p 12345 useraccount@localhost //command for vpn to connect to pi
Isso funciona muito bem, mas usando esse método, se eu fosse implementá-lo, teria alguns problemas:
- Eu precisaria configurar portas únicas não utilizadas
- Alguma maneira de manter essas portas / túneis abertos
- Preciso criar um sistema para identificar cada dispositivo. Posso registrar cada porta em um nome como um arquivo de texto localmente? Seria benéfico poder incluir isso na configuração do ssh para cada dispositivo, se possível. Eu ainda precisaria ter certeza de que as portas que uso não estão sendo usadas por nenhum outro programa ou dispositivo já existente.
O que eu não quero ter que fazer
Verifique quais portas estão livres para usar para cada RPI
Tem que editar manualmente
.ssh/config
para adicionar um nome para representar cada porta atribuída ao RPI da parte 1 acima.
Estou escrevendo isso para obter informações / assistência sobre o que fazer para atingir meu objetivo.
Alguém poderia me fornecer uma solução adequada?