OpenVPN басқарушы терминалда пайдаланушы аты мен құпиясөзді сұрайды, ал стандартты кіріске бағытталған файл сол терминал емес. Дәл осы бір бөлшек құпиясөз құбырдың ішінде тұрса да ілініп қалатын скриптті түсіндіреді. Сұрауды клиент салады, ал оқу терминал құрылғысынан жүреді, сондықтан stdin-ді бағыттау ештеңені өзгертпейді. Клиентті оның құжатталған кіру жолдарының біреуі арқылы қоректендіріңіз, сонда сол скрипт бірінші әрекеттен қосылады.

Үш жол барлық дерлік жағдайды қамтиды, әрқайсысы өзінше сәтсіз болады. Клиент шын мәнінде көрсететін сұрау бойынша таңдаңыз, скрипттеуге оңай нұсқа бойынша емес.

Сұрау stdin-нен келмейді

OpenVPN-ге тіркелгі деректері қажет болғанда ол басқарушы терминалды ашады және сондан оқиды. Сондықтан интерактивті тест жақсы көрінеді, ал дәл сол әмір cron немесе unit файлының астында қозғалыссыз тұрады, сұрау ешкім қарамайтын журналға жазылған. Кейбір құрастырмалар терминал болмағанда стандартты кіріске қайтады, және бұл сәйкессіздік қатты сәтсіздіктен де нашар, өйткені мәселені орналастыруға дейін жасырады.

Кез келген код жазбас бұрын ортаны тексеріңіз: клиентті жоспарлаушы немесе қызмет менеджері қолданатын сол пайдаланушымен, сол stdin-мен іске қосыңыз. Егер сұрау журналда ешқашан көрінбесе және үдеріс ілгерілемесе, бірдеңе жоқ терминалды күтіп тұр.

Бірінші жол: екі жолды тіркелгі деректері файлы

Аутентификация опциясы жолды қабылдайды, ал файл дәл екі жолды ұстайды: әуелі пайдаланушы аты, сосын құпиясөз, басқа ештеңе жоқ. Әдепкі файл атына сенуге емес, жолды анық беріңіз, өйткені жұмыс каталогында жатқан тіркелгі деректері файлы қате есептің қолданысқа ену жолы. Режимді 0600-ге қойып, иелікті клиентті іске қосатын есепке беріңіз.

Клиент бұл файлды іске қосылуда бір рет оқиды, сондықтан құпиясөзді ауыстыру үдерісті қайта іске қосуды білдіреді. Әдетте бұл күтілетін мінез-құлық және ол ауыстыру рәсімінің қасында runbook-та болуға тиіс.

Екінші жол: кілттің құпиясөздік фразасы үшін askpass

Құпиясөздік фразамен қорғалған жеке кілт екінші, басқа сұрау тудырады, және оның өзінің файлға негізделген жауабы бар: askpass опциясы фразаны файлдың бірінші жолынан оқиды. SSH негізіндегі туннельдер үшін баламасы — клиент орындайтын askpass бағдарламасы, оның стандартты шығысы құпияға айналады.

Екі форманың ешқайсысы құпияны аргументтер тізіміне қоймайды, екеуі де оны файл ретінде немесе оны басып шығаратын орындалатын бағдарлама ретінде қалдырады. Қорғаныс — файл рұқсаттары мен үдеріс иелігі, жасырындық емес. Кодқа қатырылған жолды қайталайтын көмекші — қосымша қадамдармен жасалған құпия.

Үшінші жол: портал клиентінің өз CLI-і

Кәсіпорын клиенттері әдетте терезесіз аталған порталға қосылатын әмір жолының кіру нүктесін ұсынады, және бұл қолдау көрсетілетін жол. Linux-та GlobalProtect клиенті өз CLI-і арқылы қосылу мен сертификатты импорттау операцияларын ұсынады, ал сертификаттық аутентификацияны қолданатын порталдарға автоматты қосылу жұмыс істеуі үшін импорт қадамы қажет. Оны синтезделген перне басулардан артық көріңіз: нақты шығу мәртебесін аласыз, терезе фокусына тәуелділік жоқ және ол құлыпталған экранда да сақталады.

Егер бірінші қосылу әлі де сертификатты қабылдау үшін адамды қажет етсе, автоматтандыру аяқталмаған. Импортты орнату кезінде жасап, оны алғышарт ретінде жазып қойыңыз.

Ағынға псевдотерминал қажет болғанда

Алдымен құпиясөз, содан кейін бір реттік код сұрайтын реттіліктің оқитын бір файлы жоқ. Expect тәрізді терминал драйвері дұрыс құрал, өйткені ол әр үлгіні кезекпен күтеді және бірдеңені сәйкестендіру үшін үдеріс іске қосылуы керек.

Екі сәтсіздік басым. Клиентті іске қоспай сұрауды күтетін скрипт мәңгі күтеді, ал Tcl қабық емес, сондықтан expect блогының ішінде жазылған қабық арифметикасы оқылғандай бағаланбайды. Үлгілерді құрастырғанда жөндеу жалаушасын қосулы ұстап, сосын өшіріңіз.

Ағып кететін құпиялар және олардың жасырынатын жері

Аргумент ретінде берілгеннің бәрі үдерістер тізімінде көрінеді, сондықтан тіркелгі деректерінің орны файлда немесе көмекшінің артында, ешқашан әмір жолында емес. Бір реттік кодтар дизайн бойынша жұмсалады және әр әрекет үшін жасалуы керек. Сәтсіздік журналдары көбіне пайдаланушы атын, кейде одан да көбін алып жүреді, сондықтан бір жерге жібермес бұрын оларды өшіріп тастаңыз және құпияны профильдің өзінен тыс ұстаңыз, өйткені ішіне құпиясөз салынған конфигурация файлы билеттер мен репозиторийлерге жабысады. Есепті ауыстыру сонда әр көшірмені іздеуді білдіреді, және дәл осы шығынды бұл орналасу болдырмайды.

Таңдаған жолдарыңызды тексеріп, сосын оларды клиентті шын мәнінде іске қосатын unit файлына немесе жоспарлаушыға жалғаңыз. Туннель дәл сол үдеріс тірі болғанша өмір сүреді.

Қатысты мақалалар