OpenVPN lêst jo wachtwurd fan de terminal, net fan stdin
Wêr't OpenVPN echt in wachtwurd lêst, wêrom't in bestân op stdin mislearret, en de trije stipe tagongswegen foar skripte oanmelding op Linux en macOS.
OpenVPN freget om in brûkersnamme en wachtwurd op de terminal dy't it bestjoer hat, en in bestân dat nei standertynfier om laat wurdt is dy terminal net. Dat iene detail ferklearret it skript dat hinget wylst it wachtwurd rjocht dêr yn 'e piip stiet. De prompt wurdt tekene troch de klient en it lêzen bart fan it terminalapparaat, dus it omlieden fan stdin feroaret neat. Fied de klient troch ien fan syn dokumintearre ynfierwegen en itselde skript ferbynt by de earste poging.
Trije wegen dekke hast elk gefal, en elk mislearret op syn eigen wize. Kies nei de prompt dy't de klient echt toant, net nei de opsje dy't it maklikst is om te skripten.
De prompt komt net fan stdin
As OpenVPN tagongsgegevens nedich hat, iepenet it de terminal dy't it bestjoer hat en lêst dêr. Dêrom liket in ynteraktive test goed, wylst deselde opdracht ûnder cron of in unit-bestân stil stiet mei de prompt skreaun yn in loch dêr't nimmen nei sjocht. Guon builds falle werom op standertynfier as der gjin terminal is, en dy ynkonsistinsje is slimmen as in hurde mislearring, want hy ferberget it probleem oant de ynset.
Kontrolearje de omjouwing foar't jo koada skriuwe: start de klient ûnder deselde brûker, mei deselde stdin, as de planner of tsjinstbehearder dat sil dwaan. As de prompt nea yn it loch ferskynt en it proses foarût giet net, wachtet eat op in terminal dy't net bestiet.
Earste wei: in tagongsgegevensbestân fan twa rigels
De autentikaasje-opsje nimt in paad, en it bestân befettet krekt twa rigels, earst brûkersnamme dan wachtwurd, en neat oars. Jou it paad eksplisyt troch ynstee fan te fertrouwen op in standertbestânsnamme, want in ferdwaald tagongsgegevensbestân yn 'e wurkmap is hoe't it ferkearde akkount yn gebrûk komt. Set de modus op 0600 en jou it eigendom oan it akkount dat de klient draait.
De klient lêst dat bestân ien kear by it starten, dus it wachtwurd rotearje betsjut it proses op 'e nij starte. Dat is meastentiids it gedrach dat jo wolle, en it heart yn it runbook njonken de rotaasjeproseduere.
Twadde wei: askpass foar de kaaiwachtfrase
In priveekaai dy't mei in wachtfrase beskerme is, ropt in twadde, oare prompt op, en hy hat syn eigen bestânsbasearre antwurd: de askpass-opsje lêst de frase fan 'e earste rigel fan in bestân. Foar SSH-basearre tunnels is it ekwivalint in askpass-programma dat de klient útfiert, en waans standertútfier it geheim wurdt.
Gjin fan 'e beide foarmen set it geheim yn 'e argumintlist, en beide litte it bestean as bestân of as útfierber programma dat it printsjet. De beskerming is bestânsrjochten en eigendom fan it proses, net ferburgenens. In helper dy't in fêst kodearre tekenrige werhellet is in geheim mei ekstra stappen.
Tredde wei: de eigen CLI fan 'e portalklient
Bedriuwsclients leverje meastentiids in kommandorigel-startpunt dat mei in neamd portal ferbynt sûnder finster, en dat is it stipe paad. Op Linux biedt de GlobalProtect-klient ferbyn- en sertifikaatymportbewurkingen oan fia syn CLI, en portalen dy't sertifikaatautentikaasje brûke hawwe de ymportstap nedich foar't in automatisearre ferbining wurkje kin. Kies it boppe syntetyske toetsprikken: jo krije in echte útgongsstatus, gjin ôfhinklikens fan finsterfokus, en it oerlibbet in beskoattele skerm.
As de earste ferbining noch in minsk nedich hat om in sertifikaat te akseptearjen, is de automatisearring net klear. Doch de ymport by it ynstellen en skriuw it as foar betingst op.
As de stream in pseudo-terminal nedich hat
In rige dy't om in wachtwurd en dan om in ienmalige koade freget hat gjin inkeld bestân om te lêzen. In terminalstjoerder lykas Expect is it rjochte ark, want hy wachtet op elk patroan om bar, en hy hat it proses start nedich foar't er eat dan ek mar matselje kin.
Twa mislearringen oerhearskje. In skript dat op in prompt wachtet sûnder de klient te starten wachtet ivich, en Tcl is gjin shell, dus shell-rekkenjen skreaun yn in expect-blok wurdt net sa beoardiele as it lêst. Hâld de debugflagge oan wylst jo de patronen bouwe, en set it dan út.
Geheimen dy't lekke, en wêr't se har ferbergje
Alles dat as argumint trochjûn wurdt is te sjen yn 'e proseslist, dus tagongsgegevens hearre yn in bestân of efter in helper, nea op 'e kommandorigel. Ienmalige koades wurde neffens ûntwerp ferbrûkt en moatte foar elke poging makke wurde. Mislearringslochs drage faak de brûkersnamme en soms mear, dus redigearje se foar't jo se earne hinne stjoere, en hâld it geheim bûten it profyl sels, want in konfiguraasjebestân mei in ynbêde wachtwurd wurdt yn tickets en repositories plakt. It akkount rotearje betsjut dan elke kopy jeie, en dat is krekt de kosten dy't dizze yndieling mijt.
Auditearje de wegen dy't jo keazen hawwe, en fêstigje se dan oan it unit-bestân of de planner dy't de klient echt draaie sil. De tunnel libbet krekt sa lang as dat proses.