OpenVPN küsib kontrollterminalis kasutajanime ja parooli, ja standardsisendisse suunatud fail ei ole see terminal. See üks detail selgitab skripti, mis jääb rippuma, kuigi parool on otse torus. Käsu joonistab klient ja lugemine toimub terminaliseadmest, seega stdin-i ümbersuunamine ei muuda midagi. Toitke klienti ühe tema dokumenteeritud sisendi kaudu ja sama skript ühendub esimesel katsel.

Kolm sisendit katavad peaaegu iga juhtumi ja igaüks ebaõnnestub omal moel. Valige selle järgi, millist käsku klient tegelikult näitab, mitte selle järgi, millist valikut on kõige lihtsam skriptida.

Käsk ei tule stdin-ist

Kui OpenVPN vajab volitusi, avab ta kontrollterminali ja loeb sealt. Seepärast näeb interaktiivne test hea välja, samas kui sama käsk croni või unit-faili all seisab jõude, käsk kirjutatud logisse, mida keegi ei vaata. Mõned buildid langevad tagasi standardsisendile, kui terminali pole, ja see ebajärjekindlus on hullem kui kõva tõrge, sest see peidab probleemi kuni juurutamiseni.

Kontrollige keskkonda enne mis tahes koodi kirjutamist: käivitage klient sama kasutaja ja sama stdin-iga, nagu seda teeb ajastaja või teenusehaldur. Kui käsk ei ilmu kunagi logisse ja protsess ei liigu edasi, ootab miski terminali, mida pole olemas.

Esimene sisend: kaherealise volitustefail

Autentimisvalik võtab tee ja fail sisaldab täpselt kahte rida, kõigepealt kasutajanimi, seejärel parool, ilma millegi muuta. Edastage tee selgesõnaliselt, selle asemel et loota vaikimisi failinimele, sest töökataloogis ekslev volitustefail on viis, kuidas valesse kontosse satutakse. Seadke režiimiks 0600 ja andke omandiõigus kontole, mis klienti käivitab.

Klient loeb seda faili üks kord käivitumisel, seega parooli vahetamine tähendab protsessi taaskäivitamist. Tavaliselt on see soovitud käitumine ja see kuulub runbooki vahetusprotseduuri kõrvale.

Teine sisend: askpass võtmefraasi jaoks

Paroolifraasiga kaitstud privaatvõti tekitab teise, erineva käsu, ja sellel on oma failipõhine vastus: valik askpass loeb fraasi faili esimeselt realt. SSH-põhiste tunnelite puhul on vasteks askpass-programm, mille klient käivitab ja mille standardväljundist saab saladus.

Kumbki vorm ei pane saladust argumentide loendisse ja mõlemad jätavad selle eksisteerima failina või käivitatava programmina, mis selle välja trükib. Kaitse on failiõigused ja protsessi omand, mitte hämarus. Abiline, mis kordab koodi kirjutatud stringi, on saladus lisasammudega.

Kolmas sisend: portaalikliendi oma CLI

Ettevõttekliendid tarnivad tavaliselt käsurealt käivitatava sisendpunkti, mis ühendub nimetatud portaaliga ilma aknata, ja see on toetatud tee. Linuxis pakub GlobalProtecti klient CLI kaudu ühendamise ja sertifikaadi importimise toiminguid, ning sertifikaadiautentimist kasutavad portaalid vajavad impordisammu enne, kui automatiseeritud ühendus saab toimida. Eelistage seda sünteesitud klahvivajutustele: saate tõelise väljumisoleku, sõltuvuse akna fookusest ja see elab üle lukustatud ekraani.

Kui esimene ühendus vajab endiselt inimest sertifikaadi vastuvõtmiseks, pole automatiseerimine valmis. Tehke import seadistamise ajal ja kirjutage see eeltingimusena üles.

Kui voog vajab pseudoterminali

Jada, mis küsib parooli ja seejärel ühekordset koodi, ei oma ühtegi faili, mida lugeda. Terminalidraiver nagu Expect on õige tööriist, sest see ootab iga mustrit kordamööda, ja see vajab käivitatud protsessi, enne kui suudab üldse midagi sobitada.

Kaks tõrget domineerivad. Skript, mis ootab käsku klienti käivitamata, ootab igavesti, ja Tcl ei ole shell, seega expect-ploki sees kirjutatud shelli aritmeetika ei hinnata nii, nagu see loetakse. Hoidke silumislipp sisse lülitatud, kuni mustreid ehitate, ja lülitage see siis välja.

Saladused, mis lekkivad, ja kus need peituvad

Kõik argumendina edastatu on protsesside loendis nähtav, seega volitused kuuluvad faili või abilise taha, mitte kunagi käsureale. Ühekordsed koodid kuluvad disaini järgi ja tuleb iga katse jaoks luua. Tõrkelogid kannavad sageli kasutajanime ja mõnikord enamat, seega redigeerige neid enne kuhugi saatmist ja hoidke saladus profiilist endast väljas, sest manustatud parooliga konfiguratsioonifail kleebitakse piletitesse ja repositooriumidesse. Konto vahetamine tähendab siis iga koopia jahti, ja täpselt see kulu on see, mida see paigutus väldib.

Auditeerige valitud sisendeid ja ühendage need seejärel unit-faili või ajastajaga, mis klienti tegelikult käivitab. Tunnel elab täpselt nii kaua, kui elab see protsess.

Seotud artiklid