O que estou tentando fazer é ativar um Raspberry , fisicamente colocado no site de um cliente, que tenha acesso à Internet por meio de IP dinâmico , para receber comandos SSH do estado selvagem sem ter que manipular o roteador e o firewall do cliente . Nenhuma conexão de entrada permitida nessa rede, além disso, o endereço de Internet do site do cliente é dinâmico.
Editar : para conhecer a solução para este problema, consulte as respostas de Kevin_Kinsey e Florin Godard , ou vá até o final da minha pergunta para saber como eu consegui fazê-lo funcionar na porta 22 padrão do SSH.
Eu já tentei estudar e entender o que é proposto em ssh para private-ip no Unix Stack Exchange , mas eu realmente não entendi o ponto.
Eu quero conectar-me do meu laptop ao servidor VPS do Cliente e fazer com que o servidor VPS se conecte ao Raspberry SSH. Então:
( firewall access allow in+out )
| => VPS Server \ ( firewall access allow out only )
| | => Raspberry
MY PC /
Aqui está um cenário de caso com configurações de endereços IP, portas e nomes IP:
MY PC
name: [email protected]
Client VPS Server
name: remote.null.tld
IP Address: 98.76.54.32
SSH Port: 9876
Raspberry
model: Zero W
name: [email protected]
IP Address: dynamic IP ( based on Internet Provider )
SSH Port: 6789
Raspberry's iptables: empty
Router's Firewall Restrictions: allow only out
Internet stability: very low
O IP externo do Raspberry é aquele atribuído pelo provedor de Internet e pode variar dependendo das reinicializações do roteador. Não pode determinar absolutamente.
O acesso à Internet na rede do cliente é muito instável . Link de rádio ou algo parecido. De qualquer forma, a conexão com a Internet sofre de muita largura de banda de dança.
Além disso, o roteador do cliente não pode ser manipulado não por preguiça, mas por causa das restrições impostas pela depuração de TI do cliente.
Eu tenho acesso SSH ao VPS do cliente e consigo instalar qualquer software nele.
Editar: solução para o problema
Na minha configuração, as portas não eram padrão. Então, a solução foi esta:
Na framboesa:
# login to [email protected] is done via private/public key with no passwords
ssh -p 9876 -f -N -T -R 55555:localhost:6789 [email protected]
No crontab da framboesa:
# A re-connect is performed at every 10th minute of every hour to prevent accidental tunnel breakdowns.
10 * * * * ps -ef | grep 'ssh -p 9876 -f -N -T -R' | grep -v grep | awk '{print $2}' | xargs -r kill -9 && sleep 30s && ssh -p 9876 -f -N -T -R 55555:localhost:6789 [email protected] >/dev/null 2>&1
Na ponte VPS remote.null.tld
ssh -p 55555 raspberry_username@localhost
Ou, uma solução mais elegante através da modificação da configuração ssh do VPS:
Host tunnelToRemoteRaspberry
Hostname localhost
User raspberry_username
Port 55555