Starten Sie autossh beim Systemstart

14

Gibt es eine Möglichkeit, beim Start zu starten autossh, damit der SSH-Tunnel gestartet und eingerichtet wird, bevor sich ein Benutzer überhaupt angemeldet hat? Ich starte Ubuntu auf dem Terminal, und ich möchte, dass der autosshProzess beim Start automatisch startet, damit ich ssh in kann.

Ich habe versucht, den Befehl hinzuzufügen /etc/rc.local, sowie ein /etc/init/*.confSkript zu erstellen . Nichts davon scheint zu funktionieren.

ptf
quelle
Welche Version von Ubuntu ist das?
George Udosen
@ George 16.04 LTS.
ptf

Antworten:

19

Unter Verwendung systemddies kann getan werden (Probe autosshfür erstellten mysqlZugang):

  1. Erstellen Sie eine systemd-Datei mit nanooder vimoder einem geeigneten Editor Ihrer Wahl:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Fügen Sie den folgenden Inhalt hinzu:

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

    sudo systemctl daemon-reload
    
  4. Starten Sie den AutosshDienst:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Aktivieren um boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Status überprüfen mit:

    sudo systemctl status autossh-mysql-tunnel
    

Hinweis

Bei systemd und AutoSSH ist jedoch Folgendes zu beachten: -f (Hintergrundverwendung) impliziert bereits, AUTOSSH_GATETIME=0wird jedoch von -fnicht unterstützt systemd.

Also im Falle systemd, dass Sie Gebrauch machen müssenAUTOSSH_GATETIME

Quelle

George Udosen
quelle
Vielen Dank! Ich versuche das, aber wenn ich renne sudo service reverse-ssh-tunnel.service status, bekomme ich Loaded: not-found (Reason: No such file or directory). Jetzt
recherchieren
bitte sudo systemctl status reverse-ssh-tunnelnichtsudo service reverse-ssh-tunnel.service status
George Udosen
2
Ich glaube du meinstautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
George Udosen
2
Ich musste auch hinzufügen -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no. Vielleicht brauche ich nur einen von ihnen, habe sie nicht einzeln getestet. Dies finden Sie hier: stackoverflow.com/a/24689061/1211119 . Wenn ich jedoch auf den Anmeldebildschirm von tty1 schaue (ich starte mit dem Terminal), hat der Dienst den Tunnel noch nicht erstellt. Wenn ich mich anmelde, wird der Dienst gestartet.
ptf
2
Manchmal möchten Sie unter einem anderen Benutzerkontext ausgeführt werden. So führen Sie das aus: Fügen Sie User=usernamezu dem [Service]Abschnitt in der Systemd-Datei hinzu.
Friederblümle