OpenVPN zahteva uporabniško ime in geslo na krmilnem terminalu, datoteka, preusmerjena na standardni vhod, pa ni ta terminal. Ta podrobnost pojasnjuje skript, ki se obesi, čeprav geslo leži prav tam v cevi. Poziv riše odjemalec, branje pa poteka s terminalske naprave, zato preusmeritev stdin ne spremeni ničesar. Odjemalcu dajte podatke skozi enega od njegovih dokumentiranih vhodov in isti skript se poveže v prvem poskusu.

Trije vhodi pokrijejo skoraj vsak primer in vsak ne uspe na svoj način. Izberite po pozivu, ki ga odjemalec res prikazuje, ne po možnosti, ki se najlažje skriptira.

Poziv ne prihaja s stdin

Ko OpenVPN potrebuje poverilnice, odpre krmilni terminal in bere tam. Zato je interaktivni test videti v redu, medtem ko ista ukaz pod cronom ali v datoteki unit stoji negibno s pozivom, zapisanim v dnevnik, ki ga nihče ne gleda. Nekatere gradnje se vrnejo na standardni vhod, ko terminala ni, in ta nedoslednost je slabša od trde napake, ker skriva težavo do uvedbe.

Preverite okolje, preden napišete katero koli kodo: zaženite odjemalca pod istim uporabnikom, z istim stdin, kot bo to storil razporejevalnik ali upravitelj storitev. Če se poziv nikoli ne pojavi v dnevniku in proces ne napreduje, nekaj čaka na terminal, ki ne obstaja.

Prva pot: dvovrstična datoteka s poverilnicami

Možnost preverjanja pristnosti sprejme pot, datoteka pa vsebuje natanko dve vrstici, najprej uporabniško ime, nato geslo, in nič drugega. Pot navedite izrecno, namesto da se zanesete na privzeto ime datoteke, ker zablodla datoteka s poverilnicami v delovni mapi je način, kako v uporabo pride napačen račun. Nastavite način na 0600 in lastništvo dodelite računu, ki poganja odjemalca.

Odjemalec to datoteko prebere enkrat ob zagonu, zato menjava gesla pomeni ponovni zagon procesa. Običajno je to vedenje, ki ga želite, in sodi v runbook ob postopek menjave.

Druga pot: askpass za geslo ključa

Z geslom zaščiten zasebni ključ sproži drug, drugačen poziv, in ta ima svoj odgovor iz datoteke: možnost askpass prebere geslo iz prve vrstice datoteke. Za tunele na osnovi SSH je ustreznica program askpass, ki ga izvaja odjemalec, in njegov standardni izhod postane skrivnost.

Nobena oblika ne položi skrivnosti na seznam argumentov in obe jo pustita obstajati kot datoteko ali kot izvršljivo datoteko, ki jo izpiše. Zaščita so dovoljenja datoteke in lastništvo procesa, ne nerazvidnost. Pomočnik, ki ponavlja v kodo vgrajen niz, je skrivnost z dodatnimi koraki.

Tretja pot: lasten CLI portala

Podjetniški odjemalci običajno prinesejo vstopno točko v ukazni vrstici, ki se poveže z imenovanim portalom brez okna, in to je podprta pot. V Linuxu odjemalec GlobalProtect prek svojega CLI ponuja operacije povezovanja in uvoza potrdila, portali s potrdilnim preverjanjem pristnosti pa potrebujejo korak uvoza, preden lahko samodejna povezava deluje. Prednost dajte temu namesto sintetičnih pritiskov tipk: dobite pravo izhodno stanje, brez odvisnosti od fokusa okna, in preživi zaklenjen zaslon.

Če prva povezava še vedno potrebuje človeka, ki sprejme potrdilo, avtomatizacija ni končana. Uvoz opravite med namestitvijo in ga zabeležite kot predpogoj.

Ko tok potrebuje psevdoterminal

Zaporedje, ki zahteva geslo in nato enkratno kodo, nima ene same datoteke za branje. Terminalski gonilnik, kot je Expect, je pravo orodje, ker po vrsti čaka na vsak vzorec, in potrebuje zagnan proces, preden sploh lahko kaj ujame.

Prevladujeta dve napaki. Skript, ki čaka na poziv, ne da bi zagnal odjemalca, čaka večno, in Tcl ni lupina, zato se lupinska aritmetika, zapisana v bloku expect, ne ovrednoti tako, kot se bere. Med gradnjo vzorcev pustite vklopljeno zastavico za odpravljanje napak in jo nato izklopite.

Skrivnosti, ki uhajajo, in kje se skrivajo

Vse, kar je podano kot argument, je vidno na seznamu procesov, zato poverilnice sodijo v datoteko ali za pomočnika, nikoli v ukazno vrstico. Enkratne kode se po zasnovi porabijo in jih je treba ustvariti za vsak poskus. Dnevniki napak pogosto nosijo uporabniško ime in včasih več, zato jih redigirajte, preden jih kam pošljete, in skrivnost hranite zunaj samega profila, ker konfiguracijska datoteka z vgrajenim geslom konča prilepljena v zahtevkih in shrambah. Menjava računa potem pomeni lov na vsako kopijo, in prav tem stroškom se ta postavitev izogne.

Preglejte izbrane vhode in jih nato povežite z datoteko unit ali razporejevalnikom, ki bo odjemalca res zagnal. Tunel živi natanko toliko, kolikor živi ta proces.

Sorodni članki