Korleis køyre OpenConnect i bakgrunnen etter interaktiv innlogging
Fullfør innlogginga i forgrunnen og overlat deretter tunnelen til klienten sin eigen bakgrunnsmodus. Kontrollane som held han søkbar og stoppbar.
Du fullfører MFA-førespurnaden, tunnelen kjem opp, og lukking av terminalen tek sambandet med seg. Dette er eit overvakingsproblem, ikkje eit autentiseringsproblem, og OpenConnect har allereie brytaren som løyser det. Løysinga er å la klienten greine seg til bakgrunnen når oppstarten er ferdig, når den interaktive delen verkeleg er over. Her følgjer ei rekkje kontrollar: gå gjennom dei i rekkefølgje og stopp ved den første som ikkje gjeld for gatewayen din.
Stadfest kva gatewayen krev ved innlogging
Før du skriv ein kommando, noter legitimasjonsvegen utrullinga krev. Berre sertifikat, passord pluss token og ein nettlesarrunde via ein SAML-leverandør oppfører seg ulikt, og bakgrunnsmodus kan ikkje hoppe over nokon av dei. Valet endrar kva som skjer etter oppstarten, aldri kva som skjer under han.
Den freistande snarvegen er å automatisere førespurnaden. Ein wrapper som skriv eit fast svar når han kjenner att ein passordførespurnad, bryt saman i det augneblinken gatewayen ber om ein eingongskode, og lèt ein legitimasjon liggje i ei fil andre kontoar kan lese. Viss ein person må godkjenne økta, hald personen i løkka.
Køyr den første økta i forgrunnen og les utdata
Kople til normalt éin gong og lat heile handtrykket bli skrive ut. Noter protokollen som blir brukt, sertifikat- eller tokenstien, tunneladressa serveren tildeler, og kvar åtvaring før tilkoplinga blir godteken. Den utskrifta er utgangspunktet ditt og den einaste billege måten å skilje eit klientproblem frå ei gatewayendring seinare. Lagre ho utanfor terminalbufferen.
Gjenta deretter same kall med bakgrunnsmodus og ei PID-fil lagd til, til dømes openconnect --background --pid-file /run/openconnect.pid vpn.example.net, og hald protokoll- og autentiseringsvala gatewayen krev på same line. OpenConnect-handboka skildrar valet som å halde fram i bakgrunnen etter at oppstarten er fullført, og nettopp difor må den interaktive fasen vere ferdig først.
Gjer den køyrande prosessen søkbar og stoppbar
Ei PID-fil er berre prov så lenge ho svarar til ein levande prosess. Legg ho i ei mappe tenestekontoen eig, og samanlikn det registrerte nummeret med prosesslista før du signaliserer noko. Omstart og krasj lèt fila liggje att, og ei utdatert fil er den vanlege grunnen til at eit stoppskript melder suksess medan tunnelen framleis er oppe. Handsame kontrollen som ein del av stopprosedyren, ikkje eit valfritt steg.
Signaliser den stadfesta PID-en, og stadfest deretter at tunnelgrensesnittet faktisk er borte i staden for å stole på exit-statusen. Viss klienten treng forhøgde rettar for å konfigurere grensesnittet, må signalet kome frå ein konto som har lov til å sende det.
Ikkje stable bakgrunnsmodus under ein supervisor
systemd og liknande supervisørar ventar å eige prosessen dei starta, og difor forvirrar ein klient som greiner seg bort dei. Supervisøren ser ein startar avslutte medan den verkelege sambandet lever vidare, så omstartlogikk, statusrapportering og stopptidsavbrot skildrar noko som ikkje lenger er sant. Skriv eininga i den støtta forgrunnsoppsetnaden og lat supervisøren gjere daemonarbeidet.
Hald --background tilbake for økter ein person startar og deretter går frå. Viss kravet er ein tunnel som finst før nokon loggar inn, manglar ein godkjend ikkje-interaktiv identitet pluss ein plan for å fornye han, og ingen kommandolinjebrytar gjev nokon av delane. Å leggje brytaren til eit oppstartsskript gjev ein tunnel som feilar stille ved den første utløpte legitimasjonen.
Handsama øktcookien som ein legitimasjon
OpenConnect dokumenterer ein eigen autentiseringsfase via --authenticate, og materialet kan leverast tilbake med --cookie-on-stdin. Det paret finst for integrasjonsarbeid, og det det produserer er like følsamt som passordet som laga det.
Hald verdien utanfor shell-historia, utanfor loggar og utanfor kvar sak du opnar. Eit overleveringsskript må òg ta vare på den stadfesta endepunktinformasjonen klienten fekk saman med cookien; mistar du han, kan ein seinare køyring kople til ein vert du aldri autentiserte, noko som er verre enn ei tilkopling som berre feilar.
Gå gjennom lista før du lukkar terminalen
Fire ting bør vere sanne: den interaktive innlogginga vart fullført i forgrunnen, PID-fila peikar på ein prosess du har stadfest, supervisørspørsmålet er avgjort den eine eller andre vegen, og cookien har ein lagringsplan som ikkje er ei vanleg tekstfil. Når alle fire held, er det trygt å gå frå terminalen, og tunnelen held fram å køyre.
Viss ein av dei feilar, fiks det punktet før du rører dei andre, fordi dei resterande kontrollane ikkje kan kompensere for det. Ta òg vare på forgrunnsutskrifta frå første køyring: neste gong tunnelen fell utan varsel, er den baselinen det som skil ei endring på gateway-sida frå ei på klientsida.