OpenVPN хяналтын терминал дээр хэрэглэгчийн нэр, нууц үг асуудаг бөгөөд стандарт оролт руу чиглүүлсэн файл тэр терминал биш. Энэ нэг дэлгэрэнгүй мэдээлэл нууц үг хоолойд байгаа ч гацаж буй скриптийг тайлбарладаг. Асуултыг клиент зурдаг ба уншилт нь терминалын төхөөрөмжөөс хийгддэг тул stdin-ийг чиглүүлэх нь юу ч өөрчлөхгүй. Клиентийг өөрийн баримтжуулсан оролтын замуудын нэгээр тэжээвэл мөнөөх скрипт анхны оролдлогод холбогдоно.

Гурван зам бараг бүх тохиолдлыг хамардаг бөгөөд тус бүр өөрийн аргаар бүтэлгүйтдэг. Клиент үнэхээр харуулж буй асуултаар сонго, скриптлэхэд хамгийн хялбар сонголтоор биш.

Асуулт stdin-ээс ирдэггүй

OpenVPN-д нэвтрэх мэдээлэл хэрэгтэй бол хяналтын терминалыг нээж тэндээс уншдаг. Тиймээс интерактив туршилт сайн харагдаж байхад cron эсвэл unit файлын дор мөнөөх команд хөдөлгөөнгүй зогсож, асуулт нь хэн ч хардаггүй логт бичигдсэн байдаг. Зарим бүтээгдэхүүн терминал байхгүй үед стандарт оролт руу буцдаг бөгөөд энэ зөрүү нь хатуу бүтэлгүйтлээс ч дор, учир нь асуудлыг байршуулалт хүртэл нуудаг.

Ямар ч код бичихээс өмнө орчныг шалга: клиентийг хуваарьлагч эсвэл үйлчилгээний менежертэй ижил хэрэглэгч, ижил stdin-ээр ажиллуул. Асуулт логт хэзээ ч гарч ирэхгүй, процесс урагшлахгүй бол ямар нэг зүйл байхгүй терминалыг хүлээж байна.

Эхний зам: хоёр мөрт нэвтрэх мэдээллийн файл

Баталгаажуулалтын сонголт зам авдаг бөгөөд файл яг хоёр мөр агуулна, эхлээд хэрэглэгчийн нэр дараа нь нууц үг, өөр юу ч үгүй. Анхдагч файлын нэрэнд найдахын оронд замыг тодорхой өг, учир нь ажлын хавтаст хөвж байгаа нэвтрэх мэдээллийн файл нь буруу бүртгэл хэрэглэгдэх зам. Горимыг 0600 болгож, эзэмшлийг клиентийг ажиллуулж буй бүртгэлд өг.

Клиент энэ файлыг эхлэх үед нэг удаа уншдаг тул нууц үгийг солих нь процессыг дахин эхлүүлэх гэсэн үг. Энэ нь ихэвчлэн хүссэн зан төлөв бөгөөд солилтын журамтай зэрэгцэн runbook-д байх ёстой.

Хоёр дахь зам: түлхүүрийн нууц үг хэллэгт зориулсан askpass

Нууц үг хэллэгээр хамгаалагдсан хувийн түлхүүр хоёр дахь, өөр асуулт үүсгэдэг бөгөөд түүнд өөрийн файлд суурилсан хариулт бий: askpass сонголт хэллэгийг файлын эхний мөрөөс уншдаг. SSH-д суурилсан туннелуудад тэнцэх зүйл нь клиентийн ажиллуулдаг askpass программ бөгөөд түүний стандарт гаралт нууц болдог.

Аль ч хэлбэр нууцыг аргументийн жагсаалтад хийхгүй бөгөөд хоёулаа түүнийг файл хэлбэрээр эсвэл түүнийг хэвлэдэг гүйцэтгэх програм хэлбэрээр орхидог. Хамгаалалт нь файлын зөвшөөрөл ба процессын эзэмшил, бүрхэг байдал биш. Кодонд хатуу бичигдсэн мөрийг эргүүлэн хэлдэг туслах нь нэмэлт алхмуудтай нууц юм.

Гурав дахь зам: порталын клиентийн өөрийн CLI

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

Хэрэв эхний холболт гэрчилгээг хүлээн авах хүн шаардсаар байвал автоматжуулалт дуусаагүй. Суулгах үед импортыг хийж, урьдчилсан нөхцөл болгон бичиж үлдээ.

Урсгалд псевдотерминал хэрэгтэй үед

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

Хоёр бүтэлгүйтэл давамгайлдаг. Клиентийг эхлүүлэлгүйгээр асуултыг хүлээж буй скрипт мөнхөд хүлээнэ, Tcl бол shell биш тул expect блок дотор бичсэн shell арифметик уншигдсанаар үнэлэгдэхгүй. Загваруудыг бүтээж байхдаа дибаг тугийг асаалттай байлгаад дараа нь унтраа.

Алдагдаж буй нууцууд, тэд хаана нуугддаг

Аргумент болгон дамжуулсан бүхэн процессын жагсаалтад харагддаг тул нэвтрэх мэдээлэл файлд эсвэл туслахын ард байх ёстой, хэзээ ч командын мөрөнд биш. Нэг удаагийн кодууд зохион бүтээлтээр зарцуулагддаг бөгөөд оролдлого бүрт үүсгэх ёстой. Бүтэлгүйтлийн логууд ихэвчлэн хэрэглэгчийн нэрийг, заримдаа түүнээс илүүг агуулдаг тул хаа нэгтээ илгээхийн өмнө тэдгээрийг арилгаж, нууцыг профайлаас гадна байлга, учир нь дотор нь нууц үг орсон тохиргооны файл тасалбар болон репозиторид наалддаг. Бүртгэлийг солих нь дараа нь хуулбар бүрийг ан хийх гэсэн үг бөгөөд энэ зардлыг энэ зохион байгуулалт зайлсхийдэг.

Сонгосон замуудаа аудит хийгээд дараа нь клиентийг үнэхээр ажиллуулах unit файл эсвэл хуваарьлагчид холбо. Туннель нь тэр процесс амьд байх хугацаанд л амьдарна.

Холбоотой нийтлэлүүд