Confira o programa autossh para reconexão automática. tela não vai atrapalhar porque você sempre especifica comandos externos e sinalizadores para esses comandos após sinalizadores específicos da tela.
Em suma, toda vez que meu computador inicializa, eu gostaria de iniciar uma conexão de encaminhamento de porta ssh que se reconectará com o servidor se a conexão cair. O computador é o Debian Wheezy x64.
Uma conexão inicial e bem-sucedida pode ser feita da seguinte maneira:
screen -dmS autossh autossh -M 29000 -N -v -p 22 -l user -i /path/to/.ssh/id_rsa -L port:my-computer:port my-server.com
Como isso pode ser feito para ser executado na inicialização? (preferencialmente por usuário, não root). Aqui está como eu tenho iniciado programas na inicialização:
rc.local chama meu script de inicialização da seguinte forma:
su -c "/home/username/scripts/startup" username
Atualmente, / home / username / scripts / startup contém o seguinte:
screen -dmS program1 python my-python-program
screen -dmS program2 python my-python-program2
screen -dmS autossh autossh -M 29000 -N -v -p 22 -l user -i /path/to/.ssh/id_rsa -L port:my-computer:port my-server.com
Uma vez inicializado, todos os três programas parecem estar em execução (por lista de tela -ls). Não há problema com o program1 ou o programa 2. No entanto, o autossh não está realmente encaminhando a porta.
A diferença entre uma conexão bem-sucedida executada por mim e uma conexão mal-sucedida executada na inicialização é que uma conexão bem-sucedida tem a linha:
debug1: channel 4: free: direct-tcpip: listening port 8082 for 192.168.1.104 port 80, connect from ::1 port 59681,
nchannels 5
Enquanto a conexão mal sucedida continua tentando assim:
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 5: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 6: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 7: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 8: new [direct-tcpip]
Alguma ideia do que está errado? Por que um programa funcionaria bem quando eu o executasse manualmente, mas não dentro do meu script de inicialização?
Tags ssh bash port-forwarding linux script