auto inicia um túnel ssh reverso na inicialização do sistema

2

Eu tenho uma máquina remota atrás de um firewall que desejo conectar através do SSH. Tanto quanto eu entendo isso pode ser conseguido usando um túnel reverso ssh.

Então o comando que estou usando é

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa.pub  [email protected]

Meu principal problema é que eu quero executar este comando sempre que o computador for iniciado para que o computador fique acessível após uma reinicialização.

Eu tentei usar o cron adicionando o comando crontab do meu usuário e em /etc/cron . No entanto, o problema que tenho é que ambos os comandos são solicitados por uma senha. Eu criei o arquivo the id_rsa.pub e enviei para o servidor remoto, mas ainda assim parece que não funciona.

Se eu estiver logado (por exemplo, através do teamviewer), posso executar o comando e nenhuma senha é solicitada. Se eu executar o comando como root ( sudo ), a senha (vazia) do arquivo rsa será solicitada. Eu suspeito que o meu problema está aqui, ou seja, quando o cron executa o comando ssh pede a senha e o comando trava.

Eu tentei usar o arquivo rsa do meu usuário e o arquivo rsa do root e com nenhum deles eu consegui me conectar.

    
por orestis 15.04.2016 / 20:14

2 respostas

1

Corrigindo o problema do SSH

Você não pode autenticar a máquina remota com a chave pública , você precisa usar a chave privada para fazer isso. Chave pública tem que estar no servidor remoto. Se você não tiver certeza, basta copiar a chave pública para o servidor remoto assim:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver

e, em seguida, execute seu comando com chave privada:

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Execução deste comando na inicialização

Como você já foi com o crontab, execute crontab -e para editar seu cron. Adicione a seguinte linha para executar esse comando assim que o seu computador inicializar.

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]
    
por Gen 15.04.2016 / 22:08
0

Basta adicionar sleep 60; antes do seu comando ssh:

@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]
after reboot your network is still down
    
por Oskar Niedam 16.03.2017 / 14:52