Lancer l'autossh au démarrage du système

15

Existe-t-il un moyen de démarrer autosshau démarrage, afin qu'il démarre et configure le tunnel ssh avant même qu'un utilisateur ne se soit connecté? Je démarre Ubuntu sur le terminal et j'aimerais que le autosshprocessus démarre automatiquement au démarrage afin que je puisse y entrer.

J'ai essayé d'ajouter la commande à /etc/rc.local, ainsi que de créer un /etc/init/*.confscript. Rien de tout cela ne semble fonctionner.

ptf
la source
De quelle version d'Ubuntu s'agit-il?
George Udosen
@George 16.04 LTS.
ptf
Quelque chose comme @reboot autossh -D 9050 user@sshserver -fTNCsur crontab ?
Pablo Bianchi

Réponses:

20

En utilisant systemdcela peut être fait (échantillon autosshcréé pour l' mysqlaccès):

  1. Créez un fichier systemd en utilisant nanoou vimou l'éditeur approprié de votre choix:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Ajoutez le contenu suivant:

    [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. Recharger systemd:

    sudo systemctl daemon-reload
    
  4. Démarrez le Autosshservice:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Activer à boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Vérifiez l'état avec:

    sudo systemctl status autossh-mysql-tunnel
    

Remarque

Il y a cependant une chose importante à noter à propos de systemd et AutoSSH: -f (utilisation en arrière-plan) implique déjà AUTOSSH_GATETIME=0, mais -fn'est pas pris en charge par systemd.

Donc, dans le cas où systemdvous devez utiliserAUTOSSH_GATETIME

La source

George Udosen
la source
Merci! J'essaie, mais quand je cours sudo service reverse-ssh-tunnel.service status, je comprends Loaded: not-found (Reason: No such file or directory). Recherche maintenant :)
ptf
veuillez ne sudo systemctl status reverse-ssh-tunnelpassudo service reverse-ssh-tunnel.service status
George Udosen
2
Je pense que vous voulez direautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
George Udosen
2
J'avais besoin d'ajouter -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=noaussi. Peut-être que j'ai juste besoin de l'un d'eux, je ne les ai pas testés individuellement. Trouvé ici: stackoverflow.com/a/24689061/1211119 . Cependant, lorsque je regarde l'écran de connexion tty1 (je démarre sur le terminal), le service n'a pas encore créé le tunnel. Si je me connecte, le service démarre.
ptf
2
Parfois, vous souhaitez exécuter dans un contexte utilisateur différent. Pour ce faire: Ajoutez User=usernameà la [Service]section dans le fichier systemd.
friederbluemle