(apenas perguntei isso em SO, mas foi recomendado para levá-lo aqui)
Eu consegui criar um túnel SSH reverso entre um Raspberry Pi 2 e um servidor meu (servidor que possui um IP estático) e funciona bem. A conta de usuário que estou usando no servidor é chamada de "ksproxy" (não é realmente um "proxy", mas o que for).
Agora estou tentando fazer com que autossh
(do pacote Debian / Raspbian autossh
) funcione também, mas não estou conseguindo. Eu posso estar perto.
(Eu mudei o IP real aqui nesta questão para 37.xxx.yyy.zzz
para não postar o IP real do servidor)
Veja o que funciona bem: (sem autossh)
Na Rpi:
rspi@antlia:~ $ ssh -N -R 20000:localhost:22 [email protected]
No servidor (aquele com o IP estático):
[email protected]:~$ ssh rspi@localhost -t -p 20000
rspi@localhost's password:
rspi@antlia:~ $
Então, tudo funciona bem: eu digito a senha e recebo um terminal / prompt.
Eu posso acessar o Raspberry Pi da minha área de trabalho (primeiro passando pelo servidor), fazendo:
ssh -t [email protected] "ssh rspi@localhost -p 20000"
[email protected] password:
rspi@localhost's password:
...
rspi@antlia:~
Primeiro, peça a senha do servidor, depois a senha do Pi e está tudo bem.
Até aí tudo bem.
Agora eu tento o mesmo, mas desta vez com autossh:
rspi@antlia:~ $ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa [email protected]
[email protected]:~$ ssh rspi@localhost -p 20000
Isso "funciona", mas fica preso lá, sem fazer nada.
Eu tentei "-vvv" a saída dos comandos ssh, mas isso mostra que nada está acontecendo.
Se eu tentar outra porta, ela falhará:
[email protected]:~$ ssh rspi@localhost -p 1234
ssh: connect to host localhost port 1234: Connection refused
Se eu tentar a porta correta (20000), mas desta vez com o parâmetro -t
, a mesma coisa: ele "funciona", mas eu não recebo nenhum terminal / prompt.
Aqui está o -vvv
output
[email protected]:~$ ssh -vvv rspi@localhost -t -p 20000
OpenSSH_6.7p1 Debian-5+deb8u1, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 20000.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
...
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u1
Não está pedindo senha, não está mostrando nenhum terminal / prompt.
O que eu não estou entendendo aqui ou fazendo errado?
Note que não acho que seja um problema de firewall, já que o método "non autossh" funciona bem (mas eu não recebo o recurso "sempre ativo" / reconectar). Eu realmente gostaria de fazer o autossh funcionar (eu sei que poderia encontrar uma solução alternativa, como algum crontab automaticamente relançando meu túnel SSH manual, mas que provavelmente seria mais frágil do que fazer o autossh funcionar).