Dokončíte výzvu MFA, tunel se zvedne a zavřením terminálu spadne i spojení. To je problém dohledu, ne autentizace, a OpenConnect už přepínač, který ho řeší, dodává. Řešením je nechat klienta odbočit na pozadí poté, co start skončí, kdy je interaktivní část skutečně u konce. Následuje sled kontrol: projděte je popořadě a zastavte se u první, která pro vaši bránu neplatí.

Ověřte, co brána při přihlášení vyžaduje

Než napíšete příkaz, zapište si cestu k pověřením, kterou nasazení vynucuje. Jen certifikát, heslo plus token a obchůzka prohlížečem přes poskytovatele SAML se chovají odlišně a režim na pozadí nemůže žádný z nich přeskočit. Volba mění, co se děje po startu, nikdy ne to, co se děje během něj.

Lákavým řešením je výzvu zautomatizovat. Obal, který při rozpoznání výzvy k heslu napíše pevnou odpověď, se zlomí ve chvíli, kdy brána požádá o jednorázový kód, a nechá pověření v souboru, který mohou číst jiné účty. Pokud musí relaci schválit člověk, udržte člověka ve smyčce.

Spusťte první relaci v popředí a přečtěte si výstup

Připojte se jednou normálně a nechte vypsat celé navazování. Poznamenejte si používaný protokol, cestu k certifikátu nebo tokenu, adresu tunelu, kterou server přidělí, a každé varování před přijetím spojení. Tento záznam je vaše základní linie a jediný levný způsob, jak později odlišit problém klienta od změny na bráně. Uložte ho mimo buffer terminálu.

Poté zopakujte stejné volání s režimem na pozadí a přidaným PID souborem, například openconnect --background --pid-file /run/openconnect.pid vpn.example.net, a ponechte protokol a možnosti autentizace, které vaše brána vyžaduje, na stejném řádku. Manuál OpenConnect tuto volbu popisuje jako pokračování na pozadí po dokončení startu, a právě proto musí interaktivní fáze skončit první.

Udržte běžící proces dohledatelný a zastavitelný

PID soubor je důkazem jen tehdy, dokud odpovídá živému procesu. Umístěte ho do adresáře, který vlastní servisní účet, a před odesláním signálu porovnejte zaznamenané číslo s tabulkou procesů. Restarty a pády soubor zanechávají a zastaralý soubor je obvyklým důvodem, proč skript pro zastavení hlásí úspěch, zatímco tunel stále běží. Berte kontrolu jako součást postupu zastavení, ne jako volitelný krok.

Pošlete signál ověřenému PID a poté potvrďte, že rozhraní tunelu skutečně zmizelo, místo abyste věřili návratovému kódu. Pokud klient potřebuje zvýšená oprávnění ke konfiguraci rozhraní, signál musí přijít z účtu, který ho smí odeslat.

Nevrstvěte režim na pozadí pod správce služeb

systemd a podobní správci očekávají, že vlastní proces, který spustili, a proto je klient, který odbočí, mate. Správce sleduje ukončení spouštěče, zatímco skutečné spojení žije dál, takže logika restartu, hlášení stavu i časové limity zastavení popisují něco, co už neplatí. Napište unit v podporovaném uspořádání popředí a nechte práci daemona na správci.

--background vyhrazujte relacím, které člověk spustí a pak odejde. Pokud je požadavkem tunel, který existuje dřív, než se kdokoli přihlásí, chybějícím dílkem je schválená neinteraktivní identita plus plán její obnovy, a žádný přepínač příkazového řádku neposkytuje ani jedno. Přidání přepínače do bootovacího skriptu vytvoří tunel, který tiše selže u prvního propadlého pověření.

Berte session cookie jako pověření

OpenConnect dokumentuje samostatnou fázi autentizace přes --authenticate a výsledný materiál lze předat zpět pomocí --cookie-on-stdin. Tato dvojice existuje pro integrační práci a to, co produkuje, je stejně citlivé jako heslo, které ho vytvořilo.

Udržte hodnotu mimo historii shellu, mimo logy a mimo každý tiket, který otevřete. Skript pro předání také musí zachovat ověřené informace o koncovém bodu, které klient obdržel spolu s cookie; ztratíte-li je, pozdější běh se může připojit k hostiteli, vůči němuž jste se nikdy neautentizovali, což je horší než spojení, které prostě selže.

Projděte seznam, než zavřete terminál

Čtyři věci musí platit: interaktivní přihlášení skončilo v popředí, PID soubor ukazuje na proces, který jste ověřili, otázka správce je rozhodnutá jedním či druhým směrem a cookie má plán úložiště, který není obyčejný textový soubor. Když platí všechny čtyři, odchod od terminálu je bezpečný a tunel běží dál.

Pokud některá selže, opravte ji dřív, než se dotknete ostatních, protože zbývající kontroly to nemohou vynahradit. Uchovejte také záznam popředí z prvního běhu: až příště tunel bez varování spadne, právě tato základní linie oddělí změnu na straně brány od změny na straně klienta.

Související články