Det vises en melding om systemd-tty-ask-password-agent i terminalen, og tunnelen er ikke oppe. Den fristende lesningen er at VPN avviste et passord og at noe nå venter på en retting. Mer presist har en tjeneste bedt systemd om interaktiv inndata, og forespørselen er ikke besvart ennå. Hvilken tjeneste som spurte, og hvilken hemmelighet den vil ha, er to spørsmål du kan avgjøre før du skriver noe.

To betingelser avgjør hvem som bør svare

Den første betingelsen er om du startet denne instansen med vilje. En forespørsel som følger en handling du utførte, er din å svare på, og en som dukker opp uten en tilsvarende handling, tilhører noe annet. Den andre er om hemmeligheten er kontogodkjenning eller nøkkelbeskyttelse, fordi de bor på forskjellige steder og reiser gjennom forskjellige kodestier. Begge svarene er synlige i journalen hvis du ser før du handler.

Når begge svarene er klare, er beslutningen enkel: svar gjennom tjenestens egen støttede forespørselsvei. Når en av dem er uklar, er det riktige trekket å undersøke i stedet for å skrive et passord i en forespørsel du ikke kan tilordne.

Det er hele regelen, og den er verdt å si før kommandoene. Alt nedenfor følger av den.

List forespørselen før du skriver noe

Agenten kan liste opp hva som er utestående uten å svare på noe. sudo systemd-tty-ask-password-agent --list skriver ut de åpne forespørslene, og den utskriften er beviset du trenger for å koble en forespørsel til en enhet. Les den før du leverer en legitimasjon, og hold forespørselsbeskrivelser unna enhver offentlig diagnostisk innliming.

Korreler listen med operasjonen du startet, og med enheten som eier den. Hvis ingenting i listen passer med handlingen din, tilhører forespørselen du så en annen tjeneste og er ikke din å løse. Enhetsnavnet i listen er den eneste pålitelige forbindelsen mellom en forespørsel og en tjeneste.

Ikke svar på en forespørsel du ikke kan tilordne. Kostnaden ved å vente er en forsinkelse, mens kostnaden ved å svare på feil forespørsel er en legitimasjon på feil sted.

Hvilken hemmelighet trenger instansen egentlig?

auth-user-pass gjelder kontogodkjenning mot VPN-tjenesten, og uten en legitimasjonsfil er den dokumenterte atferden å spørre på konsollen. askpass skaffer i stedet passfrasen som låser opp beskyttet nøkkelmateriale, og det gjør den før prosessen går i bakgrunnen. Det er forskjellige hemmeligheter med forskjellig levetid.

Filformatene er også forskjellige. Kontoformen forventer en brukernavnlinje og en passordlinje, mens nøkkelpassfrasefilen leser den første linjen som passordet sitt. Å kopiere en legitimasjonsfiloppskrift fra den andre rollen gir vanligvis nok en forespørsel i stedet for en løsning. En fil med feil form er verre enn ingen fil, fordi feilen flytter til et sted ingen overvåker.

Kontroller hvilket direktiv instansen bruker før du bestemmer deg for hva du skal skrive. Direktivnavnet forteller deg hvilken hemmelighet forespørselen gjelder.

Hva --query gjør som --list ikke gjør

--query behandler hver utestående forespørsel på terminalen som kaller det, noe som er en mye bredere handling enn å svare på én forespørsel. Det er ikke en OpenVPN-velger, og på en travel maskin kan det svare på forespørsler som tilhører andre enheter. Overvåkingsmodus er enda bredere, fordi det fortsetter å håndtere forespørsler etter hvert som de kommer.

Bruk den smaleste mekanismen som fungerer. For én tjeneste er den tjenestens egen forespørselsflyt smalere enn en global agent, og den holder svaret knyttet til enheten som spurte.

Å gjøre en engangsforespørsel om til en ubemannet global agent fordi en melding dukket opp én gang, er måten en midlertidig irritasjon blir et permanent design. Den samme forsiktigheten gjelder for å deaktivere passordvarselenheter på hele verten.

Bestem, og registrer så valget

For en ubemannet utrulling, avtal legitimasjonskilden, filrettighetene og fornyelsesplanen med den som eier tilkoblingen. En interaktiv annen faktor kan trenge en person eller en egen tjenesteidentitet. Å undertrykke forespørselen gir ikke den godkjenningen, og å fjerne auth-user-pass ødelegger bare en tjeneste som trenger det.

Etter interaksjonen, se på den samme instansen for dens neste hendelse og test den private ressursen. Hvis ingenting er utestående, gå tilbake til instanstilstanden i stedet for å starte hver OpenVPN-enhet på verten.

Relaterte artikler