AutoSSH não pode resolver o nome do host diretamente após o boot

3

Eu quero configurar um túnel para o meu servidor doméstico, que será estabelecido logo após a inicialização da minha máquina. Usando esta resposta , eu tenho meu comando autossh configurado dentro de um serviço, que foi configurado para rodar em boot. Eu quero que o túnel funcione pela internet e tenha um serviço DNS dinâmico para acomodar isso.

Se eu executar o serviço manualmente, o túnel será conectado com sucesso. O problema ocorre quando o serviço é iniciado automaticamente após a inicialização. O serviço começa bem, no entanto, a conexão com o meu servidor não é estabelecida, pois meu nome de host não pode ser resolvido.

ssh child pid is 1413
ssh: Could not resolve hostname my.host.name: Temporary failure in name resolution
ssh exited with error status 255; restarting ssh

Meu arquivo de serviço é o seguinte:

[Unit]
Description=Creates tunnel to server
After=network.target

[Service]
User=james
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -o "StrictHostKeyChecking=no" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 3030:localhost:22 [email protected]

[Install]
WantedBy=multi-user.target

Existe alguma maneira de contornar isso?

    
por Top Cat 03.02.2018 / 16:46

2 respostas

0

Desculpas, mas acontece que houve um erro que eu não estava prestando atenção:

Error: remote port forwarding failed for listen port 3030

Este erro seria exibido após os erros could not resolve hostname .

Embora não tenha certeza do que poderia estar causando o erro, consegui contorná-lo adicionando ExitOnForwardFailure yes ao meu /etc/ssh/ssh_config . Isso sairá da sessão ssh quando esse erro for lançado.

Parece que a sessão ssh subjacente estava suspensa devido a esse erro. Isso impediu que autossh tentasse se reconectar ao meu servidor. Com essa alteração na configuração, autossh tentará tentar novamente a conexão ssh quando o erro for lançado.

systemctl status agora está inundado com esses erros, pois autossh tenta se conectar várias vezes:

starting ssh (count 16)
ssh child pid is 2463
Error: remote port forwarding failed for listen port 3030
ssh exited with error status 255; restarting ssh
starting ssh (count 17)
ssh child pid is 2473
Error: remote port forwarding failed for listen port 3030
ssh exited with error status 255; restarting ssh
starting ssh (count 18)
ssh child pid is 2481

Considerando que anteriormente apenas um desses erros seria exibido, após o qual autossh seria interrompido.

Os erros que eu incluí na minha pergunta ainda ocorrem, no entanto, não acho que isso seja algo para se preocupar, pois é possível que uma conexão de rede não tenha sido estabelecida corretamente quando o serviço começa a ser executado.

    
por 03.02.2018 / 20:49
0

Substituir

After=network.target

com

After=network-online.target
    
por 03.02.2018 / 18:49