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:
- Inicie automaticamente um túnel ssh reverso na inicialização do sistema.
- Conectando um túnel SSH na reinicialização?
-
man ssh
Atualização: