Mae sgript sy'n cychwyn cleient VPN gan werthwr yn hongian nes iddi amseru allan, ac mae'r log yn dangos y cleient yn gofyn am god dilysu na deipiodd neb ef. Roedd y cyfrinair wedi'i gyflenwi, felly'r casgliad amlwg yw bod y cyfrinair yn anghywir. Nid yw. Mae'r cais am god yn sgwrs ar wahân ar sianel ar wahân, ac ni agorodd eich sgript mohoni erioed.

Ewch drwy'r pum gwiriad isod yn eu trefn. Stopiwch ar yr un cyntaf sy'n methu, oherwydd mae pob cam diweddarach yn tybio bod y rhai cynharach yn dal.

Gwiriad 1: a yw'r cleient yn darllen mewnbwn safonol o gwbl?

Profwch cyn ysgrifennu unrhyw awtomeiddio: pibellwch gyfrinach ffug i'r cleient a gwyliwch beth sy'n digwydd. Os yw'n argraffu ei gais ac yna'n aros, nid yw'n darllen y bibell.

Mae llawer o gleientiaid yn agor dyfais y derfynell yn uniongyrchol, neu'n gwrthod cymryd cyfrinach o ffrwd nad yw'n derfynell, fel na all pibell grwydrol ollwng cyfrinair. OpenVPN yw'r eithriad dogfennol, oherwydd mae --auth-user-pass yn cymryd llwybr ffeil. Yn aml nid oes gan gleientiaid gwerthwyr sy'n gofyn am god un-tro unrhyw faner gyfatebol, ac mae eu cais yn aros am derfynell na ddarparodd eich sgript mohoni.

Gwiriad 2: a oes gan y plentyn derfynell?

Mae pty yn dyrannu terfynell i'r plentyn, sy'n troi ceisiadau'n allbwn darllenadwy y gallwch ateb yn eu trefn.

import pexpect

child = pexpect.spawn("openconnect vpn.example.net", encoding="utf-8", timeout=30)
child.expect("GROUP:")
child.sendline("staff")
child.expect("USERNAME:")
child.sendline("alice")
child.expect("PASSWORD:")
child.sendline(PASSWORD)
child.expect("Connected as", timeout=60)

Mae'r llinynnau cais uchod yn enghreifftiol; copïwch yr union destun y mae eich cleient yn ei argraffu, gan gynnwys maint llythrennau ac atalnodi. Mae gan bob disgwyliad derfyn amser, ac mae plentyn caeedig yn codi eithriad yn lle dychwelyd statws, felly lapwch y dilyniant a thriniwch ddiwedd y ffeil fel methiant. Sylwch beth nad yw'r bloc hwn yn ei wneud: mae'r plentyn yn marw gyda'r sgript, oherwydd nid yw pty yn fecanwaith datgysylltu ac mae disown yn adeiledigyn cragen na all gyrraedd proses a grëwyd gan eich sgript.

Gwiriad 3: a oes mewnbwn anryngweithiol a gefnogir?

Mae crafu'r sgrin yn torri ar uwchraddiadau cleient, felly chwiliwch am faner ddogfennol yn gyntaf.

Edrychwch drwy'r allbwn cymorth am opsiwn tocyn neu god un-tro, a gwiriwch a yw'r gwasanaeth yn derbyn y cod a atodir at y maes cyfrinair. Lle mae'r cleient yn darllen ffeil gyfrifiaeth, rhowch y ffeil iddo yn lle cais:

openvpn --config office.ovpn --auth-user-pass <(printf "%s\n%s\n" "$USER_NAME" "$PASSWORD")

Mae amnewid prosesau yn rhoi llwybr darllenadwy i'r cleient ar systemau sy'n darparu /dev/fd. Mae'r gyfrinach yn dal yn gyfrinach o safbwynt y cleient, felly cadwch hi allan o logiau, hanes y gragen a rhestrau prosesau. Os yw'r cleient yn gwrthod /dev/fd neu'n agor llwybr y cyfrifiaeth fwy nag unwaith, ysgrifennwch ffeil go iawn gyda chaniatadau caeth a'i dileu yn yr un sgript.

Gwiriad 4: a fydd y twnnel yn goroesi'r sgript?

Yn ddiofyn mae'r twnnel yn marw gyda'i riant, sef y gwrthwyneb i'r hyn sydd ei angen ar sgript gychwyn.

Nid yw disown -h yn helpu ond pan lansiwyd y cleient gennych fel tasg cragen, oherwydd mae'n golygu tabl tasgau'r gragen honno ac ni all gyrraedd proses a grëwyd gan eich sgript trwy pty. Rheolwr gwasanaeth yw'r cartref gwell ar gyfer unrhyw beth sy'n rhaid ailgysylltu heb oruchwyliaeth, oherwydd mae'n ailgychwyn y cleient ac yn cofnodi pam y bu farw. Beth bynnag, disgwyliwch god newydd ar ôl pob ailgysylltu: mae tocyn un-tro yn cael ei ddefnyddio gan y dilysiad llwyddiannus cyntaf.

Gwyliwch beth mae sudo yn ei wneud i'r dilyniant. Nid cais cyfrinair sudo yw cais y VPN, ac ateb â chyfrinair y VPN yw'r ffordd fwyaf cyffredin y mae trefn ddisgwyliadau gywir fel arall yn methu o hyd.

Gwiriad 5: a ddylai cod person fod mewn sgript?

Dyma'r gwiriad y mae pobl yn ei hepgor. Mae tocyn yn perthyn i berson, tra bo twnnel y mae'n rhaid iddo godi ar amserlen yn perthyn i'r peiriant.

Os oes rhaid i dasg ailgysylltu heb oruchwyliaeth, gofynnwch a all tystysgrif peiriant neu gyfrif gwasanaeth ddisodli'r mewngofnodi rhyngweithiol. Mae awtomeiddio cod un-tro rhywun yn troi ail ffactor yn gyfrinach storio, sef newid polisi yn hytrach na chyfleustra sgriptio. Lle mae'r gwasanaeth yn cefnogi'r ddau, dewiswch y gyfrifiaeth sy'n cyfateb i'r ffordd y mae'r dasg yn rhedeg mewn gwirionedd. Ysgrifennwch yr ateb, oherwydd bydd y person nesaf yn gofyn pam mae'r sgript yn dal tocyn.

Sut olwg sydd ar sgript sy'n gweithio

Mae'r sgript yn argraffu'r cam y cyrhaeddodd, byth y gyfrinach, ac yn gadael â chod nad yw'n sero ar unrhyw ddisgwyliad a fethodd.

Profwch hi drwy ei thorri yn fwriadol: cyfrinair anghywir, grŵp anghywir, tocyn wedi dod i ben. Dylai pob methiant stopio ar gam a enwir yn lle hongian. Yna rhedwch hi unwaith yn erbyn y gwasanaeth go iawn a gwirio'r twnnel o'r tu allan i'r sgript, nid o'i thu mewn.

Erthyglau cysylltiedig