Como obter um túnel SSH reverso persistente usando o autossh?

2

(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).

    
por Cedric Martin 27.02.2016 / 18:57

1 resposta

1
$ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa [email protected]
...
$ ssh rspi@localhost -p 20000

Nesse caso, você não está usando a opção ssh -R para configurar um túnel reverso; você está especificando a opção autossh -M . O parâmetro autossh -M faz com que o autossh configure um túnel naquela porta que o autossh usa para seus próprios propósitos (para teste regularmente que o link SSH ainda está funcionando). Não é o equivalente do parâmetro ssh -R. Quando você se conecta à porta 20000 nesse cenário, está sendo conectado à porta de teste de conexão privada do autossh.

Você deve continuar a especificar o túnel reverso que deseja usar a opção -R do ssh. Se você quiser usar o recurso de porta de eco do autossh, você deve executá-lo em uma porta diferente:

$ autossh -M 20002 -N -R 20000:localhost:22 [email protected]
    
por 27.02.2016 / 19:03