Quero poder conectar-me diretamente de qualquer lugar a um Linux incorporado (chamado C) que não tenha um endereço IP público.
C pode configurar uma conexão com o servidor (com SSH -R) e, se eu usar SSH no servidor, posso usar SSH no Linux incorporado.
No entanto, eu gostaria de poder fazer o SSH do cliente para C sem precisar primeiro fazer o SSH no servidor. (Não consigo configurar uma conexão com SSH -R de C para o cliente)
Isso é possível, em caso afirmativo, como?
Responder1
Você pode fazer isso com bastante facilidade. Uma maneira é usar o encaminhamento remoto de porta do SSH, pelo qual C diz ao servidor para encaminhar uma porta de volta para ele, algo como:
ssh -R 2222:localhost:22 server
Este comando, quando executado a partir de C, dirá ao servidor para pegar qualquer conexão com a porta 2222 e encaminhá-la para C na porta 22.
Da mesma forma, você pode configurar o encaminhamento de porta no servidor por meio de regras de firewall.
Responder2
Se quiser se conectar à porta encaminhada, você precisará de quatro coisas:
- Especifique o IP/nome do host público do servidor como o primeiro argumento para
-R
, caso contrário, ele estará escutando apenas emlocalhost
, o que obviamente não é acessível de fora do servidor. - Configure o servidor com
GatewayPorts
, o que permitirá que as portas encaminhadas sejam acessíveis de fora - Use a
-g
opção para basicamente permitir o mesmo do lado do cliente - Abra a porta
2222
no firewall do servidor.
O comando pode ser assim:
ssh -g -R server:2222:localhost:22 server