could not read Auth username from stdin izgleda kot težava z overjanjem in ni. OpenVPN je poskusil vprašati za uporabniško ime s standardnega vhoda, ni našel nič berljivega in se ustavil, preden je sploh stopil v stik s strežnikom. Račun je lahko povsem veljaven; proces preprosto nima koga vprašati.

Zato je prvi koristen korak potrditi, kaj bere odjemalec, ne pa znova poskušati povezave ali spreminjati nastavitev na strani strežnika. Pojdite skozi spodnja preverjanja po vrsti in ustavite se pri prvem, ki ne uspe.

Napako berite kot lokalno napako vhoda

Ko se auth-user-pass pojavi brez argumenta datoteke, odjemalec pričakuje vprašanje. V interaktivni lupini to vprašanje deluje, ker ima proces terminal. Pod systemd, opravilom cron ali vsebnikom je standardni vhod običajno prazen in branje se takoj vrne z napako, ki jo vidite.

Sporočilo navede tudi polje, ki ni uspelo, uporabniško ime ali geslo, kar kaže, kako daleč je prišlo branje. Manjkajoče uporabniško ime pomeni, da proces ni mogel prebrati prav ničesar. Manjkajoče geslo po uspešnem uporabniškem imenu pomeni, da se je vhodni tok končal med obema branjema, kar je značilno za napol zapisano datoteko ali zaprt cevovod.

Preden spremenite kar koli drugega, potrdite pogled samega odjemalca. Zaženite ga v ospredju z isto konfiguracijo in istim uporabnikom ter opazujte, ali se vprašanje pojavi. Če se pojavi v vaši lupini, a ne pod upraviteljem storitev, je razlika v viru vhoda, ne v poverilnicah. Hitra primerjava datoteke unit in okolja vaše lupine običajno pokaže, kateri od njiju zagotavlja terminal.

Storitvi dajte podprt vir poverilnic

Podprt vir za delovanje brez nadzora je datoteka s poverilnicami, posredovana kot argument ukazu auth-user-pass. Datoteka se bere kot golo besedilo: prva vrstica je uporabniško ime, druga je geslo. Označite jo z absolutno potjo, na primer /etc/openvpn/client/creds , da delovni imenik storitvenega računa ne more spremeniti pomena direktive.

Dovoljenja so enako pomembna kot pot. Datoteka mora biti berljiva za račun, ki izvaja odjemalca, in ne za vse druge, ter bi morala biti v lasti storitvenega računa ali roota s skupino, ki vključuje storitev. Berljivost preverite kot ta račun, ne da bi izpisali vsebino.

Relativna pot je tihi način odpovedi. Profil je lahko v enem imeniku, medtem ko systemd zažene proces drugje, zato se datoteka, ki se razreši v vaši lupini, za storitev ne razreši. Premaknite poverilnice na fiksno mesto in se nanje sklicujte absolutno. Nato enkrat zaženite storitev in potrdite, da se uporablja ista pot, namesto da bi zaupali pogledu urejevalnika profilov.

Če uvedba zahteva enkratno kodo ali drug interaktivni izziv, se odločite, ali delovni tok odjemalca to res podpira brez nadzora. Datoteka s statičnim geslom ne more odgovoriti na krožečo kodo, ponavljanje vprašanja brez odgovora pa ne doda nobene informacije.

Zakaj script-security ne bo pomagal

script-security nadzoruje, ali odjemalec sme izvajati skripte in koliko jim sme posredovati, vključno s tem, ali je geslo mogoče izročiti skriptu prek okoljske spremenljivke. O tem, od kod izvirata uporabniško ime in geslo, ne pove ničesar.

Dvig na višjo raven je pogost odziv, ker sporočilo omenja Auth, a spreminja dovoljenja skriptov, ne vira vhoda, in širi, kaj sme odjemalec izvesti. Če je pomožni skript del zasnove, najprej popravite vir vhoda in ohranite varnostno raven na najnižji vrednosti, ki jo uvedba potrebuje.

Upravljalni vmesnik je legitimna alternativa. Čelni del se lahko poveže z njim, prejme zahtevo za poverilnice in odgovori z uporabniškim imenom in geslom, tako delujejo nekateri GUI. Če ga uporabljate, ga vežite na lokalni naslov, zaščitite z datoteko gesla za upravljanje in omejite, kdo se lahko poveže, ker je to krmilni kanal za odjemalca.

Preverite naslednjo stopnjo po tem, ko odjemalec prebere datoteko

Ko odjemalec lahko prebere poverilnice, je naslednja odpoved resnična izmenjava s strežnikom in njeno sporočilo ima drug pomen. Neuspeh overjanja na tej stopnji pomeni, da je strežnik zavrnil račun; odgovor z izzivom pomeni, da strežnik želi drug dejavnik. Obravnavajte jih kot nove težave, ne kot ponovitev iste.

Preizkusite celotno pot tako, kot jo bo zagnala storitev: isti račun, isti delovni imenik, isto okolje unit. Povezava, ki deluje le, kadar se zažene iz vaše lupine, je znak, da sta okoljska spremenljivka ali terminal še vedno del toka.

Nato hranite skrivnosti tam, kamor spadajo. Gesla v argumentih ukazne vrstice se pojavijo v tabeli procesov, gesla v izhodu za razhroščevanje pa končajo v zahtevkih. Uporabite zaščiteno datoteko ali upravljalni vmesnik, hranite dnevnike na ravni, ki ne ponavlja poverilnic, in zamenjajte datoteko, ko odide kdor koli z dostopom.

Kontrolni seznam: absolutna pot do poverilnic, berljiva kot storitveni račun, terminal ni potreben, script-security na minimumu, upravljalni vmesnik le, če je vezan in overjen, in dobljeni odgovor strežnika obravnavan kot ločen dogodek.

Sorodni članki