Portál AbcLinuxu, 30. dubna 2025 15:13

autossh vs systemd

14.1.2017 08:25 | Přečteno: 4383× | Linux | Výběrový blog | poslední úprava: 15.1.2017 10:34

Tento zápisok je len ako take moje how-to ale možno sa hodi aj niekomu inému. Potreboval som na maline π spúšťať autossh, tak som sa pokúsil vydať cestou systemd a tu je môj výsledok.

Najprv potrebujem mat funkčné pripojenie k serveru cez ssh kľúče bez nutnosti zadávania hesla (k tomu už je nespočet návodov) a nastavenie tunelu som dal do $HOME/.ssh/config

Host mytunel
    HostName my.server.ip
    User me
    Port 22222
    RemoteForward 11122 localhost:22
    RemoteForward 11180 localhost:80

Kedže autossh používa kľúče z môjho home adresára, tak som sa rozhodol že služba bude bežat pod mojim užívateľom. Vytvoril som systemd unit servis v domovskom adresári: $HOME/.config/systemd/user/autossh.service

[Unit]
Description=AutoSSH tunnel service
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/autossh -M 11100 -f mytunel -N

[Install]
WantedBy=default.target
Tiež som pridal monitoring port.

Po každom vloženi alebo úprave unitu musime reloadnuť:

$ systemctl --user daemon-reload
systemctl --user ... je spúšťaný vždy pod užívateľom a nie cez sudo.

A možno ešte budeme potrebovať (v pripade minimálnej inštalacie debianu) doinštalovať balík libpam-systemd

Náš nový unit vyskúšame a skontrolujeme či beží:

$ systemctl --user start autossh.service
$ systemctl --user status autossh.service
● autossh.service - AutoSSH tunnel service
   Loaded: loaded (/home/me/.config/systemd/user/autossh.service; disabled)
   Active: active (running) since Sat 2017-01-14 07:54:19 CET; 2sec ago
  Process: 709 ExecStart=/usr/bin/autossh -M 11100 -f mytunel -N (code=exited, status=0/SUCCESS)
 Main PID: 724 (autossh)
   CGroup: /user.slice/user-1000.slice/user@1000.service/autossh.service
           ├─724 /usr/lib/autossh/autossh -M 11100 mytunel -N
           └─725 /usr/bin/ssh -L 11100:127.0.0.1:11100 -R 11100:127.0.0.1:11101 -N mytunel
Samozrejme v tomto bode by tunel mal byť funkčný, ale to ešte nieje všetko...

Musíme zabezpečiť aby sa servis spúšťal automaticky:

$ systemctl --user enable autossh.service
A to najdoležitejšie aby sa užívateľove servisy spúšťali aj keď užívateľ nebude prihlásený:
$ sudo loginctl enable-linger $USER
Inak by sa servis spustil vždy len po prihlasení užívatela a zastavil po jeho odhlásení, čo v prípade autossh je asi nežiaduce.

Vyskúšame to reštartom systému a kontrolou či autossh sa spustilo po štarte (ideálne kontrolou na serveri cez ktorý tunelujeme a to ešte skôr než sa po reštarte prihlásime na náš stroj aby sme si boli istý že linger funguje správne.

Zopár poznámok:

Tak dúfam že som nič nezabudol.

       

Hodnocení: 89 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

xkucf03 avatar 14.1.2017 13:49 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
Je vidět, že systemd není jenom zlo :-) Tohle se mi líbí (spouštění a správa pod uživatelem, jednoduchý konfigurák místo init skriptu…).
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
14.1.2017 14:15 Michal
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkné.
14.1.2017 17:21 Radek Podgorny | skóre: 16
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
nespoustej to s -f a nepotrebujes type=forking (a muzes to zacit supervizovat, treba pomoci doporuceneho restart=on-failure)
http://podgorny.cz
pavlix avatar 14.1.2017 19:09 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: autossh vs systemd
To jo, akorát se tím připraví o notifikaci dokončení startu služby, když použije Type=simple
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
14.1.2017 17:30 Radek Podgorny | skóre: 16
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
btw, jestli jedinym smyslem autossh je supervizovat ssh, vubec ho nepotrebujes a pouzij rovnou systemd+ssh.
http://podgorny.cz
Josef Kufner avatar 15.1.2017 10:43 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: autossh vs systemd
Toto by mohlo být zajímavé spojit ještě se socket activation, že by se tunel vyráběl na požádání při otevření spojení.
Hello world ! Segmentation fault (core dumped)
15.1.2017 11:33 Sten
Rozbalit Rozbalit vše Re: autossh vs systemd
Půjde ale SSH předat takový socket?
pavlix avatar 15.1.2017 11:42 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: autossh vs systemd
SSH se socket activation funguje.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.1.2017 11:52 Sten
Rozbalit Rozbalit vše Re: autossh vs systemd
I pro tunel?
pavlix avatar 15.1.2017 13:36 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: autossh vs systemd
Na straně serveru, ne na straně klienta. Ale autossh patří na stranu klienta, takže asi ne.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.1.2017 11:41 janc1c1
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
len či náhodou neobjavuješ koleso:
https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
15.1.2017 18:06 Kate | skóre: 9
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
Díky, enable-linger jsem neznala :) To se hodí.
Bedňa avatar 16.1.2017 01:56 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
To je fajn, že už fungujú veci čo fungovali pred dvaciatimi rokmi. Ďakujem, shovám si to do trezoru na spodok aby to nikto nenašiel.
KERNEL ULTRAS video channel >>>
xkucf03 avatar 16.1.2017 08:13 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: autossh vs systemd
veci čo fungovali pred dvaciatimi rokm
Třeba to, aby si mohl uživatel službu konfigurovat a spouštět sám a nepotřeboval k tomu roota/sudo?
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
16.1.2017 14:49 jan1617
Rozbalit Rozbalit vše Re: autossh vs systemd
Odpovědět | Sbalit | Link | Blokovat | Admin
-o "ExitOnForwardFailure yes" - ak pri štarte ešte nie je sieť alebo server práve nie je dostupný

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.