Mulai autossh pada startup sistem

15

Apakah ada cara untuk memulai autosshsaat startup, sehingga ia memulai dan mengatur ssh tunnel bahkan sebelum pengguna masuk? Saya mem-boot Ubuntu ke terminal, dan saya ingin autosshprosesnya dimulai secara otomatis saat startup sehingga saya bisa ssh in.

Saya sudah mencoba menambahkan perintah /etc/rc.local, serta membuat /etc/init/*.confskrip. Sepertinya tidak ada yang berhasil.

PTF
sumber
Apa versi Ubuntu ini?
George Udosen
@ George 16.04 LTS.
ptf

Jawaban:

20

Menggunakan systemdini dapat dilakukan (sampel autosshdibuat untuk mysqlakses):

  1. Buat file systemd menggunakan nanoatau vimatau editor pilihan yang sesuai:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. Tambahkan konten berikut:

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

    sudo systemctl daemon-reload
    
  4. Mulai Autosshlayanan:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. Aktifkan di boot:

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. Periksa status dengan:

    sudo systemctl status autossh-mysql-tunnel
    

Catatan

Namun ada hal penting yang perlu diperhatikan tentang systemd dan AutoSSH: -f (penggunaan latar belakang) sudah menyiratkan AUTOSSH_GATETIME=0, namun -ftidak didukung oleh systemd.

Jadi dalam kasus systemdAnda perlu memanfaatkanAUTOSSH_GATETIME

Sumber

George Udosen
sumber
Terima kasih! Saya mencoba ini, tetapi ketika saya berlari sudo service reverse-ssh-tunnel.service status, saya mengerti Loaded: not-found (Reason: No such file or directory). Meneliti ini sekarang :)
ptf
silakan lakukan sudo systemctl status reverse-ssh-tunneltidaksudo service reverse-ssh-tunnel.service status
George Udosen
2
Saya percaya maksud Andaautossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
George Udosen
2
Saya perlu menambahkan -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=nojuga. Mungkin saya hanya perlu satu dari mereka, belum mengujinya secara individual. Temukan ini di sini: stackoverflow.com/a/24689061/1211119 . Namun, ketika saya melihat layar login tty1 (saya boot ke terminal), layanan belum membuat terowongan. Jika saya masuk, layanan akan dimulai.
ptf
2
Terkadang Anda ingin menjalankan dalam konteks pengguna yang berbeda. Untuk melakukan ini: Tambahkan User=usernameke [Service]bagian dalam file systemd.
friederbluemle