Å se "invalid secrets" gir vanligvis én konklusjon: VPN-en liker ikke tegnsetting. Den konklusjonen er vanligvis feil, fordi meldingen ofte kommer fra lokal behandling før noen gateway har sett på kontoen. To design leverer det samme passordet, et grafisk felt og en legitimasjonsfil, og de feiler på forskjellige steder. Sammenlign containerne før du forenkler et passord som var greit hele tiden.

Feilen kommer før gatewayen

Lokal validering, et låst hemmelighetslager, en manglende agent og en feilformatert legitimasjonsfil gir alle feil som brukeren opplever som én avvisning. Ingen av dem involverer autentiseringsserveren. Gatewayens egen avvisning er en egen hendelse, og den kommer vanligvis med en annen melding og et annet tidspunkt. Den skjer etter at en tunnel finnes og legitimasjonen er sendt.

Så det første spørsmålet er ikke hvilke tegn som er lovlige, men hvor forsøket stoppet. En klient som aldri åpnet en tilkobling, er ikke avvist av noen. Skriv ned trinnet du observerte, fordi hvert senere steg avhenger av den klassifiseringen.

Forskjellen endrer også hvem som fikser det. Et containerproblem tilhører enheten og eieren, mens en kontoavvisning tilhører den som driver autentiseringsbackenden.

Sammenlign containerne, ikke tegnene

Et GUI-passordfelt, en keychain-oppføring, en legitimasjonsfil med to linjer og en automasjonshemmelighet bærer alle samme verdi i en forskjellig konvolutt. Konvolutten har sine egne regler, og det er de reglene som vanligvis brytes. Verdien er sjelden problemet; transporten av verdien er det. Hold de to ideene fra hverandre, så blir diagnosen kortere.

Where the value stopsWhat you seeWhat you checkWho owns the fix
GUI field or managed profileA validation message before any connection opensThe selected authentication mode and whether the field holds the secret or the usernameThe device owner or the profile author
Keychain or secret agentA prompt that keeps reappearing, or an agent errorWhether the agent is unlocked and holds an entry for this profileThe user who owns the keychain
Two-line credential fileA prompt for a password that was already suppliedLine count, line order and whether a trailing newline is presentWhoever generated the file
Shell argument or environmentWorks interactively but fails in automationWhether the shell expanded, trimmed or logged the valueWhoever wrote the automation

Fellesskapets OpenVPN 2.6 klientalternativer beskriver den tolinjefilen for auth-user-pass, inkludert oppførselen når passordlinjen mangler: klienten spør i stedet. Den ene detaljen forklarer en klasse av rapporter om at den spør etter et passord brukeren allerede har oppgitt. Den forteller deg også at en tom andre linje er en meningsfull tilstand, ikke et ufarlig formateringsvalg.

Sitering er nok et eget lag: anførselstegn inne i en vanlig legitimasjonsfil lagres som data, mens et skall fjerner dem før programmet ser noe. Det samme tegnet er ufarlig på ett sted og strukturelt på et annet. En tabell kan ikke fortelle deg hvilken container klienten brukte, så les klientens egen konfigurasjon før du velger en rad.

Linjeskift er også strukturelle. En fil med linjedelte felt kan ikke bære en verdi som inneholder et linjeskift, og det er en begrensning i formatet, ikke en dom over passordstyrke. Bruk distribusjonens støttede leveringsmekanisme i stedet for å trimme hemmeligheten så den passer i en improvisert fil.

Bygg legitimasjonsfilen uten skade fra skallet

Den tryggeste lokale veien holder hemmeligheten utenfor skallhistorikken og utenfor prosessargumentlisten. Les begge feltene interaktivt, og skriv deretter de to linjene klienten forventer. Alt annet kan bli liggende i en konfigurasjonsfil som er lett å gjennomgå.

read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds

De to første kommandoene leser brukernavnet og deretter passordet uten å vise det, den tredje skriver begge linjene, den fjerde begrenser filen, og den siste starter klienten med den filen. Legg merke til at read -r bevarer backslashes, som er nettopp den typen detalj som gjør et fungerende passord til et feilende når den utelates.

Unngå å bygge filen med en uquoted variabel eller et here-dokument fullt av skallutvidelser. Begge kan endre tegn før de når filen, og feilen som følger ser ut som en VPN-avvisning fordi passordet på disken faktisk er forskjellig fra passordet du kjenner. Sammenlign filens bytelengde med den forventede verdien hvis du mistenker dette, uten å skrive ut hemmeligheten selv. En forskjell på én eller to byte er signaturen til en siteringsulykke.

Les trinnet fra den første feilen

Behold den første konkrete meldingen fra ett forsøk, og klassifiser den deretter. En lokal valideringsfeil, en manglende privatnøkkel, en utilgjengelig hemmelighetsagent og en autentiseringsfeil i gatewayen er fire forskjellige resultater med fire forskjellige eiere. Bare én av dem handler om kontoen.

Hvis gatewayen virkelig avviser en korrekt levert legitimasjon, sjekk kontoen, autentiseringsbackenden og eventuell påkrevd utfordring sammen med administratoren. En generisk autentiseringsfeil navngir ikke et forbudt tegn.

Gjenopprett den godkjente verdien gjennom riktig mekanisme i stedet for å redusere den til bokstaver og sifre. Passordpolicyen tilhører operatøren, og en omvei som stille omgår den er ikke en rettelse. Den skjuler også den virkelige feilen for neste person, som vil møte den samme feilen med et svakere passord og ingen bedre idé.

Relaterte artikler