Iniciar autossh na inicialização do sistema

15

Existe alguma maneira de iniciar autosshna inicialização, para que ele inicie e configure o túnel ssh antes mesmo que o usuário faça login? Inicializo o Ubuntu no terminal e gostaria que o autosshprocesso fosse iniciado automaticamente na inicialização, para que eu possa realizar o ssh.

Eu tentei adicionar o comando /etc/rc.local, bem como criar um /etc/init/*.confscript. Nada disso parece funcionar.

ptf
fonte
Que versão do Ubuntu é essa?
George Udosen
@George 16.04 LTS.
ptf 19/08/19

Respostas:

20

Usando systemdisso pode ser feito (amostra autosshcriado para mysqlacesso):

  1. Crie um arquivo systemd usando nanoou vimou o editor apropriado de sua escolha:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Adicione o seguinte conteúdo:

    [Unit]
    Description=AutoSSH tunnel service everythingcli MySQL on local port 5000
    After=network.target
    
    [Service]
    Environment="AUTOSSH_GATETIME=0"
    ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NL 5000:localhost:3306 [email protected] -p 1022
    
    [Install]
    WantedBy=multi-user.target
    
  3. Recarregar systemd:

    sudo systemctl daemon-reload
    
  4. Inicie o Autosshserviço:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Ativar em boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Verifique o status com:

    sudo systemctl status autossh-mysql-tunnel
    

Nota

No entanto, há uma coisa importante a ser observada sobre o systemd e o AutoSSH: -f (uso em segundo plano) já implica AUTOSSH_GATETIME=0 , mas -fnão é suportado por systemd.

Então, no caso de systemd você precisar fazer uso deAUTOSSH_GATETIME

Fonte

George Udosen
fonte
Obrigado! Estou tentando isso, mas quando corro sudo service reverse-ssh-tunnel.service status, entendo Loaded: not-found (Reason: No such file or directory). Pesquisando isso agora :)
ptf
por favor sudo systemctl status reverse-ssh-tunnelnãosudo service reverse-ssh-tunnel.service status
George Udosen
2
Eu acredito que você quer dizerautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
George Udosen
2
Eu precisava adicionar -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=notambém. Talvez eu só precise de um deles, não os testei individualmente. Encontre isso aqui: stackoverflow.com/a/24689061/1211119 . No entanto, quando olho para a tela de login tty1 (inicializo no terminal), o serviço ainda não criou o túnel. Se eu entrar, o serviço será iniciado.
ptf 19/08/19
2
Às vezes, você deseja executar em um contexto de usuário diferente. Para fazer isso: Adicione User=usernameà [Service]seção no arquivo systemd.
Friederbluemle