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.


De quelle version d'Ubuntu s'agit-il?
George Udosen

@George 16.04 LTS.
ptf

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 cytopia@everythingcli.org -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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.