OpenVPN les passordet ditt frå terminalen, ikkje frå stdin
Kvar OpenVPN faktisk les eit passord, kvifor ei fil på stdin feilar, og dei tre støtta vegane for skripta innlogging på Linux og macOS.
OpenVPN ber om eit brukarnamn og eit passord på den kontrollerande terminalen, og ei fil som blir omdirigert til standard inn, er ikkje den terminalen. Den eine detaljen forklarer skriptet som heng med passordet liggjande rett der i røyret. Ledeteksten blir teikna av klienten, og lesinga skjer frå terminaleininga, så omdirigering av stdin endrar ingenting. Fôr klienten gjennom ein av dei dokumenterte inngangane, og det same skriptet koplar til på første forsøk.
Tre inngangar dekkjer nesten alle tilfelle, og kvar av dei feilar på sin måte. Vel etter ledeteksten klienten faktisk viser, ikkje etter kva alternativ som er lettast å skripta.
Ledeteksten kjem ikkje frå stdin
Når OpenVPN treng påloggingsinformasjon, opnar det den kontrollerande terminalen og les der. Difor ser ein interaktiv test fin ut, medan den same kommandoen under cron eller ei unit-fil står stille med ledeteksten skriven til ein logg ingen ser på. Nokre bygg fell tilbake til standard inn når det ikkje finst nokon terminal, og den inkonsistensen er verre enn ein hard feil, fordi han løyner problemet til utrulling.
Undersøk miljøet før du skriv nokon kode: køyr klienten under same brukar, med same stdin, slik planleggjaren eller tenesteadministratoren vil gjera. Viss ledeteksten aldri dukkar opp i loggen og prosessen ikkje kjem vidare, ventar noko på ein terminal som ikkje finst.
Fyrste inngang: ei påloggingsfil med to linjer
Autentiseringsalternativet tek ein stig, og fila inneheld nøyaktig to linjer, brukarnamn og deretter passord, utan noko anna. Oppgje stigen eksplisitt i staden for å stola på eit standardfilnamn, fordi ei bortkomen påloggingsfil i arbeidskatalogen er måten feil konto hamnar i bruk på. Set modus til 0600 og gje eigarskap til kontoen som køyrer klienten.
Klienten les fila éin gong ved oppstart, så rotasjon av passordet tyder å starta prosessen på nytt. Det er vanlegvis åtferda du vil ha, og ho høyrer heime i runbooken ved sida av rotasjonsprosedyren.
Andre inngang: askpass for passfrasen til nøkkelen
Ein passfraseverna privat nøkkel reiser ein andre, annleis ledetekst, og han har sitt eige filbaserte svar: alternativet askpass les passfrasen frå fyrste linje i ei fil. For SSH-baserte tunnelar er motstykket eit askpass-program som klienten køyrer, og der standardutdata blir hemmelegskapen.
Ingen av formene set hemmelegskapen i argumentlista, og begge lèt han eksistera som ei fil eller som eit køyrbart program som skriv han ut. Vernet er filrettar og prosesseigarskap, ikkje uklarleik. Ein hjelpar som ekkar ein hardkoda streng, er ein hemmelegskap med ekstra steg.
Tredje inngang: portalklienten sin eigen CLI
Bedriftsklientar leverer vanlegvis eit kommandolinjepunkt som koplar til ein namngjeven portal utan noko vindauge, og det er den støtta vegen. På Linux eksponerer GlobalProtect-klienten tilkoplings- og sertifikatimportoperasjonar gjennom sin CLI, og portalar som brukar sertifikatautentisering treng importsteget før ein automatisert tilkopling kan verka. Føretrekk det framfor syntetiske tastetrykk: du får ein ekte utgangsstatus, ingen avhengnad av vindusfokus, og det overlever ein låst skjerm.
Viss den fyrste tilkoplinga framleis treng eit menneske til å godta eit sertifikat, er automatiseringa ikkje ferdig. Gjer importen under oppsettet og registrer han som ein føresetnad.
Når flyten treng ein pseudoterminal
Ein sekvens som ber om eit passord og deretter ein eingongskode, har inga einskild fil å lesa. Ein terminaldrivar som Expect er rett verktøy fordi han ventar på kvart mønster etter tur, og han treng prosessen starta før han i det heile kan matcha noko.
To feil dominerer. Eit skript som ventar på ein ledetekst utan å starta klienten, ventar evig, og Tcl er ikkje eit skal, så skalaritmetikk skriven inne i ein expect-blokk blir ikkje evaluert slik han blir lesen. Hald feilsøkingsflagget på medan du byggjer mønstera, og slå det av etterpå.
Hemmelegskapar som lek, og kvar dei gøymer seg
Alt som blir sendt som argument, er synleg i prosesslista, så påloggingsinformasjon høyrer i ei fil eller bak ein hjelpar, aldri på kommandolinja. Eingongskodar blir brukte opp etter design og må lagast for kvart forsøk. Feilloggar ber ofte brukarnamnet og stundom meir, så rediger dei før du sender dei nokon stad, og hald hemmelegskapen utanfor sjølve profilen, fordi ei konfigurasjonsfil med innbygd passord blir lima inn i saker og repositorium. Rotasjon av kontoen tyder då å jaga kvar kopi, og det er nettopp den kostnaden dette oppsettet unngår.
Revider inngangane du valde, og kople dei deretter til unit-fila eller planleggjaren som faktisk skal køyre klienten. Tunnelen lever nøyaktig så lenge den prosessen lever.