OpenVPN башкаруучу терминалда колдонуучу атын жана сырсөздү сурайт, ал эми стандарттык кирүүгө багытталган файл ошол терминал эмес. Ушул бир деталь сырсөз түтүктүн ичинде турса да илинип калган скриптти түшүндүрөт. Сурамды клиент тартат, ал эми окуу терминалдык түзмөктөн жүрөт, ошондуктан stdin-ди багыттоо эч нерсени өзгөртпөйт. Клиентти анын документтелген кирүү жолдорунун бири аркылуу азыктандырыңыз, ошондо ошол эле скрипт биринчи аракетте туташат.

Үч жол дээрлик бардык учурларды камтыйт, ар бири өзүнчө ийгиликсиз болот. Клиент чындыгында көрсөткөн сурам боюнча тандаңыз, скрипттөө эң жеңил вариант боюнча эмес.

Сурам stdin-ден келбейт

OpenVPN ге кирүү маалыматтары керек болгондо ал башкаруучу терминалды ачат жана ошондон окуйт. Ошондуктан интерактивдүү тест жакшы көрүнөт, ал эми ушул эле буйрук cron же unit файлынын астында кыймылсыз турат, сурам эч ким карабаган журналга жазылган. Айрым курулуштар терминал жок болгондо стандарттык кирүүгө кайтат, жана бул шайкешсиздик катуу ийгиликсиздиктен да жаман, анткени маселени жайылтууга чейин жашырат.

Кандайдыр бир код жазганга чейин чөйрөнү текшериңиз: клиентти пландаштыргыч же кызмат менеджери колдоно турган ошол эле колдонуучу жана ошол эле stdin менен иштетиңиз. Эгер сурам журналда эч качан көрүнбөсө жана процесс илгерилебесе, бир нерсе жок терминалды күтүп турат.

Биринчи жол: эки саптуу кирүү маалыматтарынын файлы

Аутентификация опциясы жолду алат, ал эми файл так эки сапты кармайт: адегенде колдонуучу аты, анан сырсөз, башка эч нерсе жок. Демейки файл атына таянуунун ордуна жолду ачык бериңиз, анткени иш каталогунда жаткан кирүү маалыматтарынын файлы туура эмес эсептин колдонулушуна алып баруучу жол. Режимди 0600-га коюп, ээликти клиентти иштеткен эсепке бериңиз.

Клиент бул файлды иштетилгенде бир жолу окуйт, ошондуктан сырсөздү алмаштыруу процессти кайра иштетүүнү билдирет. Адатта бул күтүлгөн жүрүм-турум жана алмаштыруу жол-жобосунун жанындагы runbook-ко тиешелүү.

Экинчи жол: ачкычтын сырсөз фразасы үчүн askpass

Сырсөз фраза менен корголгон жеке ачкыч экинчи, башка сурамды жаратат, жана анын өзүнүн файлга негизделген жообу бар: askpass опциясы фразаны файлдын биринчи сабынан окуйт. SSH негизиндеги туннелдер үчүн барабар варианты — клиент аткарган askpass программасы, анын стандарттык чыгышы сырга айланат.

Эки форманын экөө тең сырды аргументтер тизмесине койбойт, экөө тең аны файл катары же аны басып чыгарган аткарылуучу программа катары калтырат. Коргоо — файл укуктары жана процесс ээлиги, жашыруундук эмес. Кодго катырылган сапты кайталаган жардамчы — кошумча кадамдары бар сыр.

Үчүнчү жол: портал клиентинин өз CLI-и

Ишкана клиенттери адатта терезесиз аталган порталга туташкан буйрук сабынын кирүү чекитин сунуштайт, жана бул колдоого алынган жол. Linux-да GlobalProtect клиенти өз CLI аркылуу туташуу жана сертификатты импорттоо операцияларын сунуштайт, ал эми сертификаттык аутентификацияны колдонгон порталдарга автоматтык туташуу иштеши үчүн импорт кадамы керек. Аны синтезделген баскыч басуулардан артык көрүңүз: чыныгы чыгуу статусун аласыз, терезе фокусуна көз карандылык жок жана ал кулпуланган экранда да иштейт.

Эгер биринчи туташуу эч болбосо сертификатты кабыл алуу үчүн адамды талап кылса, автоматташтыруу бүтө элек. Импортту орнотуу учурунда жасап, аны алдын ала шарт катары жазып коюңуз.

Агымга псевдотерминал керек болгондо

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

Эки ийгиликсиздик басымдуу. Клиентти иштетпестен сурамды күткөн скрипт түбөлүк күтөт, ал эми Tcl кабык эмес, ошондуктан expect блогусунун ичинде жазылган кабык арифметикасы окулгандай бааланбайт. Үлгүлөрдү куруп жатканда жөндөө желегин күйгүзүп кармаңыз, анан өчүрүңүз.

Агып кетүүчү сырлар жана алардын жашынган жери

Аргумент катары берилгендин баары процесс тизмесинде көрүнөт, ошондуктан кирүү маалыматтарынын орду файлда же жардамчынын артында, эч качан буйрук сабында эмес. Бир жолку коддор долбоор боюнча сарпталат жана ар бир аракет үчүн жаралышы керек. Ийгиликсиздик журналдары көбүнчө колдонуучу атын, кээде андан көбүрөөк нерсени алып жүрөт, ошондуктан бир жерге жөнөтүүдөн мурун аларды өчүрүп таштаңыз жана сырды профилдин өзүнөн тышкары кармаңыз, анткени ичине сырсөз салынган конфигурация файлы билеттерге жана репозиторийлерге жабышат. Эсепти алмаштыруу ошондо ар бир көчүрмөнү издөөнү билдирет, жана дал ушул чыгымды бул жайгашуу болтурбайт.

Тандалган жолдоруңузду текшерип, анан аларды клиентти чындыгында иштете турган unit файлына же пландаштыргычка туташтырыңыз. Туннель ошол процесс жашаганча жашайт.

Тектеш макалалар