iniciar automaticamente um túnel ssh reverso na inicialização do sistema

iniciar automaticamente um túnel ssh reverso na inicialização do sistema

Tenho uma máquina remota atrás de um firewall à qual desejo me conectar por meio de SSH. Pelo que entendi, isso pode ser conseguido usando um túnel SSH reverso.

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 desejo executar este comando sempre que o computador for inicializado, para que ele fique acessível após uma reinicialização.

Tentei usar o cron adicionando o comando crontab do meu usuário e in /etc/cron. No entanto, o problema que tenho é que ambos os comandos exigem uma senha. Criei the id_rsa.pubo arquivo e enviei-o para o servidor remoto, mas ainda assim parece não funcionar.

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

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

Responder1

Basta adicionar 'dormir 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]

Após a reinicialização, sua rede ainda está inoperante.

Responder2

Depois de combinar várias fontes, criei um serviço para iniciar automaticamente o canal SSH reverso. Os arquivos de configuração e as etapas necessárias são encontrados neste repositório

Responder3

Uma solução melhor pode serautossh:

"autossh é um programa para iniciar uma cópia do ssh e monitorá-lo, reiniciando-o conforme necessário caso ele morra ou pare de passar o tráfego."

Como diz a citação, isso tem o benefício adicional de fornecer recursos “sempre ativos”.

Responder4

Corrigindo problema de SSH

Você não pode autenticar a máquina remota compúblicochave, você precisa usarprivadochave para fazer isso. A chave pública deve 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 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]

Executando este comando na inicialização

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

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

informação relacionada