När »invalid secrets« visas leder det oftast till en slutsats: VPN gillar inte skiljetecken. Den slutsatsen är oftast fel, eftersom meddelandet ofta kommer från lokal hantering innan någon gateway har tittat på kontot. Två konstruktioner levererar samma lösenord, ett grafiskt fält och en fil med inloggningsuppgifter, och de misslyckas på olika ställen. Jämför behållarna innan du förenklar ett lösenord som var bra hela tiden.

Felet kommer före gatewayen

Lokal validering, ett låst hemlighetslager, en saknad agent och en felaktig fil med inloggningsuppgifter ger alla fel som användaren upplever som en enda avvisning. Ingen av dem involverar autentiseringsservern. Gatewayens egen avvisning är en separat händelse och kommer oftast med ett annat meddelande och en annan timing. Den inträffar efter att en tunnel finns och uppgifterna har skickats.

Så den första frågan är inte vilka tecken som är tillåtna utan var försöket stannade. En klient som aldrig öppnade en anslutning har inte avvisats av någon. Skriv ner steget du observerade, eftersom varje senare steg beror på den klassificeringen.

Skillnaden ändrar också vem som åtgärdar det. Ett containerproblem tillhör enheten och dess ägare, medan en kontoavvisning tillhör den som driver autentiseringsserverdelen.

Jämför behållarna, inte tecknen

Ett grafiskt lösenordsfält, en nyckelringspost, en fil med inloggningsuppgifter på två rader och en hemlighet för automatisering bär alla samma värde i ett olika hölje. Höljet har sina egna regler och det är oftast de reglerna som brister. Värdet är sällan problemet; transporten av värdet är det. Håll de två idéerna isär så blir diagnosen kortare.

Var värdet stannarVad du serVad du kontrollerarVem som äger åtgärden
Grafiskt fält eller hanterad profilEtt valideringsmeddelande innan någon anslutning öppnasDet valda autentiseringsläget och om fältet innehåller hemligheten eller användarnamnetEnhetens ägare eller profilens författare
Nyckelring eller hemlighetsagentEn uppmaning som ständigt återkommer, eller ett agentfelOm agenten är upplåst och har en post för den här profilenAnvändaren som äger nyckelringen
Fil med inloggningsuppgifter på två raderEn uppmaning om ett lösenord som redan har angettsAntal rader, radordning och om en avslutande ny rad finnsDen som skapade filen
Skalargument eller miljöFungerar interaktivt men misslyckas i automatiseringOm skalet expanderade, trimmade eller loggade värdetDen som skrev automatiseringen

De officiella alternativen för klienten Community OpenVPN 2.6 beskriver den filen på två rader för auth-user-pass, inklusive beteendet när lösenordsraden saknas: klienten frågar i stället. Den enda detaljen förklarar en klass av rapporter om att den frågar efter ett lösenord som redan angetts. Den säger också att en tom andra rad är ett meningsfullt tillstånd och inte ett ofarligt formateringsval.

Citattecken är ännu ett separat lager: citattecken i en vanlig fil med inloggningsuppgifter lagras som data, medan ett skal tar bort dem innan programmet ser något. Samma tecken är ofarligt på ett ställe och strukturellt på ett annat. En tabell kan inte säga vilken behållare din klient använde, så läs klientens egen konfiguration innan du väljer en rad.

Radbrytningar är också strukturella. En fil med radavgränsade fält kan inte bära ett värde som innehåller en ny rad, och det är en begränsning i formatet snarare än en bedömning av lösenordsstyrka. Använd den leveransmekanism som driftsättningen stöder i stället för att trimma hemligheten så att den passar i en improviserad fil.

Bygg filen med inloggningsuppgifter utan skalskador

Den säkraste lokala vägen håller hemligheten utanför skalhistoriken och utanför processens argumentlista. Läs båda fälten interaktivt och skriv sedan de två raderna som klienten förväntar sig. Allt annat kan stanna i en konfigurationsfil som är lätt att granska.

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 två första kommandona läser användarnamnet och sedan lösenordet utan att eka det, det tredje skriver båda raderna, det fjärde begränsar filen och det sista startar klienten med den filen. Notera att read -r bevarar omvänt snedstreck, vilket är precis den typen av detalj som förvandlar ett fungerande lösenord till ett misslyckat när den utelämnas.

Undvik att bygga filen med en variabel utan citattecken eller ett here-dokument fullt av skalexpansioner. Båda kan omvandla tecken innan de når filen, och det resulterande felet ser ut som en VPN-avvisning eftersom lösenordet på disken verkligen är ett annat än det du känner till. Om du misstänker detta, jämför filens bytelängd med det förväntade värdet utan att skriva ut hemligheten. En skillnad på en eller två byte är signaturen för en citeringsolycka.

Läs steget från det första felet

Behåll det första specifika meddelandet från ett försök och klassificera det sedan. Ett lokalt valideringsfel, en saknad privat nyckel, en otillgänglig hemlighetsagent och ett autentiseringsfel i gatewayen är fyra olika resultat med fyra olika ägare. Bara ett av dem handlar om kontot.

Om gatewayen verkligen avvisar en korrekt levererad uppgift, kontrollera kontot, autentiseringsserverdelen och eventuell nödvändig utmaning med administratören. Ett allmänt autentiseringsfel namnger inte ett förbjudet tecken.

Återställ det godkända värdet genom rätt mekanism i stället för att reducera det till bokstäver och siffror. Lösenordspolicyn tillhör operatören, och en kringgående lösning som tyst upphäver den är ingen åtgärd. Den döljer också det verkliga felet för nästa person, som möter samma fel med ett svagare lösenord och ingen bättre idé.

Relaterade artiklar