Auto SSH na inicialização está realmente começando, mas não está mapeando comandos?

1

Então eu tenho um sistema Ubuntu 16.04 que deveria rodar um script SSH que eu escrevi toda vez que o sistema é inicializado. Esta é a primeira vez que tento fazê-lo funcionar, nunca antes.

O script é muito simples:

while true; do sleep 60; ssh root@ip -i ~/.ssh/key -R xxxx:localhost:22; done

Está dentro de um arquivo chamado autossh.sh .

Para fazer com que o script seja executado automaticamente, tentei incluí-lo em /etc/rc.local (antes da saída 0), tentei adicioná-lo à lista de aplicativos de inicialização da GUI do Ubuntu.

Durante as duas vezes em que reinicio o computador, vejo que o script está realmente em execução, mas não está mapeando uma porta remota para o host local 22, como o comando deve fazer. Se eu executar o comando manualmente, ele funciona, mas simplesmente não funciona na inicialização.

Existe algo óbvio que estou perdendo aqui que está impedindo esse script de funcionar como deveria?

    
por user3447014 14.09.2017 / 00:21

1 resposta

0

1. O til ( ~ ) será resolvido para o seu diretório pessoal, mas não tem significado enquanto você não estiver logado. Isso não é tão importante de acordo com a próxima sugestão mas é bom ser enfatizado. Resposta relacionada . Minha sugestão aqui é reescrever o script desta maneira:

#!/bin/bash
while true; do sleep 60; ssh root@ip -i "$HOME/.ssh/key" -N -f -R xxxx:localhost:22; done
  • ou use melhor /the/full/path/to/ em vez de $HOME .

  • -f Solicita que o ssh vá para o segundo plano antes da execução do comando.

  • -N Não executa um comando remoto. Isso é útil apenas para encaminhar portas.

2. As chaves SSH são legíveis apenas para o proprietário, para que outros usuários não possam usá-las e não podem ser usadas em todo o sistema. Então, minha sugestão é usar um Cron para essa tarefa.

Faça login com o usuário proprietário da chave SSH e execute crontab -e ( -e significa editar) ou use sudo -u <user-name> crontab -e ( -u significa executar como o usuário chamado <user-name> ) e adicione este linha na parte inferior:

@reboot /full/path/to/the/script/autossh.sh > /tmp/autossh.log 2>&1

Salve e feche o Crontab. Esta linha deve executar o script na inicialização do sistema e irá gravar um log .

Referências:

Atualização:

por pa4080 14.09.2017 / 01:44