Avvia autossh all'avvio del sistema


15

C'è un modo per iniziare autosshall'avvio, in modo che si avvii e configuri il tunnel ssh prima ancora che un utente abbia effettuato l'accesso? Avvio Ubuntu sul terminale e mi piacerebbe che il autosshprocesso si avviasse automaticamente all'avvio in modo da poter accedere.

Ho provato ad aggiungere il comando a /etc/rc.local, oltre a creare uno /etc/init/*.confscript. Nessuno di questi sembra funzionare.


Quale versione di Ubuntu è questa?
George Udosen,

@George 16.04 LTS.
ptf,

Risposte:


20

Utilizzando systemdquesto può essere fatto (esempio autosshcreato per l' mysqlaccesso):

  1. Creare un file systemd utilizzando nanoo vimo l'editor appropriato scelto:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Aggiungi i seguenti contenuti:

    [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 cytopia@everythingcli.org -p 1022
    
    [Install]
    WantedBy=multi-user.target
    
  3. Ricarica systemd:

    sudo systemctl daemon-reload
    
  4. Inizia il Autosshservizio:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Abilita a boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Verifica lo stato con:

    sudo systemctl status autossh-mysql-tunnel
    

Nota

C'è comunque una cosa importante da notare su systemd e AutoSSH: -f (utilizzo in background) implica già AUTOSSH_GATETIME=0, tuttavia -fnon è supportato da systemd.

Quindi, nel caso in cui systemdè necessario utilizzareAUTOSSH_GATETIME

fonte


Grazie! Ci sto provando, ma quando corro sudo service reverse-ssh-tunnel.service status, ottengo Loaded: not-found (Reason: No such file or directory). Ricerca ora :)
ptf

per favore sudo systemctl status reverse-ssh-tunnelnon farlosudo service reverse-ssh-tunnel.service status
George Udosen,

2
Credo che tu intendaautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
George Udosen,

2
Ho dovuto aggiungere -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=noanche io . Forse ne ho solo bisogno, non li ho testati singolarmente. Trovato qui: stackoverflow.com/a/24689061/1211119 . Tuttavia, quando guardo la schermata di accesso di tty1 (avvio al terminale), il servizio non ha ancora creato il tunnel. Se eseguo l'accesso, viene avviato il servizio.
ptf

2
A volte si desidera eseguire in un contesto utente diverso. Per fare ciò: Aggiungi User=usernamealla [Service]sezione nel file systemd.
friederbluemle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.