Uruchom autossh podczas uruchamiania systemu

16

Czy jest jakiś sposób na uruchomienie autosshprzy starcie, aby uruchomił się i skonfigurował tunel ssh zanim użytkownik się nawet zaloguje? Uruchamiam Ubuntu do terminala i chciałbym, aby autosshproces uruchamiał się automatycznie przy uruchomieniu, więc mogę się zalogować.

Próbowałem dodać polecenie /etc/rc.local, a także utworzyć /etc/init/*.confskrypt. Żaden z nich nie działa.

ptf
źródło
Jaka to wersja Ubuntu?
George Udosen,
@George 16.04 LTS.
ptf

Odpowiedzi:

21

Korzystanie systemdmożna to zrobić (próbka autosshstworzony dla mysqldostępu):

  1. Utwórz plik Systemd użyciu nanolub vimczy właściwe redaktor wyboru:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Dodaj następującą treść:

    [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. Załaduj ponownie systemd:

    sudo systemctl daemon-reload
    
  4. Uruchom Autosshusługę:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Włącz w boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Sprawdź status za pomocą:

    sudo systemctl status autossh-mysql-tunnel
    

Uwaga

Należy jednak zwrócić uwagę na systemd i AutoSSH: -f (użycie w tle) już implikuje AUTOSSH_GATETIME=0, ale -fnie jest obsługiwane przez systemd.

Więc w przypadku systemdmusisz skorzystaćAUTOSSH_GATETIME

Źródło

George Udosen
źródło
Dzięki! Próbuję tego, ale kiedy biegnę sudo service reverse-ssh-tunnel.service status, rozumiem Loaded: not-found (Reason: No such file or directory). Badanie tego teraz :)
ptf,
proszę sudo systemctl status reverse-ssh-tunnelniesudo service reverse-ssh-tunnel.service status
George Udosen,
2
Myślę, że masz na myśliautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
George Udosen
2
Musiałem także dodać -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no. Może potrzebuję tylko jednego z nich, nie testowałem ich indywidualnie. Znaleziono to tutaj: stackoverflow.com/a/24689061/1211119 . Jednak gdy patrzę na ekran logowania tty1 (uruchamiam do terminala), usługa nie utworzyła jeszcze tunelu. Jeśli się zaloguję, usługa się uruchomi.
ptf
2
Czasami chcesz uruchomić w innym kontekście użytkownika. Aby to zrobić: Dodaj User=usernamedo [Service]sekcji w pliku systemowym.
friederbluemle