OpenVPN પાસવર્ડ ટર્મિનલ પરથી વાંચે છે, stdin પરથી નહીં
OpenVPN ખરેખર પાસવર્ડ ક્યાં વાંચે છે, stdin પરની ફાઇલ કેમ નિષ્ફળ જાય છે, અને Linux તથા macOS પર સ્ક્રિપ્ટેડ સાઇન-ઇન માટેના ત્રણ સમર્થિત રસ્તા.
OpenVPN નિયંત્રક ટર્મિનલ પર વપરાશકર્તાનામ અને પાસવર્ડ માંગે છે, અને પ્રમાણભૂત ઇનપુટ તરફ વાળેલી ફાઇલ એ ટર્મિનલ નથી. એ જ એક વિગત પાસવર્ડ પાઇપમાં જ હોવા છતાં અટકી જતી સ્ક્રિપ્ટ સમજાવે છે. પ્રોમ્પ્ટ ક્લાયન્ટ દોરે છે અને વાંચન ટર્મિનલ ઉપકરણમાંથી થાય છે, તેથી stdin બદલવાથી કંઈ બદલાતું નથી. ક્લાયન્ટને તેના દસ્તાવેજીકૃત ઇનપુટ રસ્તાઓમાંથી એક દ્વારા ખવડાવો અને એ જ સ્ક્રિપ્ટ પ્રથમ પ્રયાસે જોડાશે.
ત્રણ રસ્તા લગભગ દરેક કિસ્સો આવરી લે છે, અને દરેક પોતાની રીતે નિષ્ફળ જાય છે. ક્લાયન્ટ ખરેખર જે પ્રોમ્પ્ટ બતાવે છે તેના આધારે પસંદ કરો, જે વિકલ્પ સ્ક્રિપ્ટ કરવો સૌથી સહેલો છે તેના આધારે નહીં.
પ્રોમ્પ્ટ stdin પરથી આવતો નથી
જ્યારે OpenVPN ને ઓળખપત્રોની જરૂર હોય ત્યારે તે નિયંત્રક ટર્મિનલ ખોલે છે અને ત્યાંથી વાંચે છે. એટલે ઇન્ટરેક્ટિવ પરીક્ષણ સારું દેખાય છે, જ્યારે cron અથવા unit ફાઇલ હેઠળ એ જ આદેશ નિષ્ક્રિય બેસી રહે છે અને પ્રોમ્પ્ટ એવા લોગમાં લખાય છે જે કોઈ જોતું નથી. કેટલાક બિલ્ડ ટર્મિનલ ન હોય ત્યારે પ્રમાણભૂત ઇનપુટ પર પાછા પડે છે, અને આ અસંગતિ કઠોર નિષ્ફળતા કરતાં પણ ખરાબ છે, કારણ કે તે તૈનાતી સુધી સમસ્યા છુપાવે છે.
કોઈ પણ કોડ લખતા પહેલાં વાતાવરણ ચકાસો: શેડ્યુલર અથવા સેવા મેનેજર જે વપરાશકર્તા અને stdin સાથે ચાલશે, તે જ સાથે ક્લાયન્ટ ચલાવો. જો પ્રોમ્પ્ટ ક્યારેય લોગમાં ન આવે અને પ્રક્રિયા આગળ ન વધે, તો કંઈક એવી ટર્મિનલની રાહ જોઈ રહ્યું છે જે અસ્તિત્વમાં નથી.
પ્રથમ રસ્તો: બે લાઇનની ઓળખપત્ર ફાઇલ
પ્રમાણીકરણ વિકલ્પ એક પાથ લે છે, અને ફાઇલમાં બરાબર બે લાઇન હોય છે, પહેલા વપરાશકર્તાનામ પછી પાસવર્ડ, બીજું કંઈ નહીં. ડિફોલ્ટ ફાઇલનામ પર આધાર રાખવાને બદલે પાથ સ્પષ્ટ રીતે આપો, કારણ કે કામની ડિરેક્ટરીમાં પડેલી ભૂલી ગયેલી ઓળખપત્ર ફાઇલ એ જ રીતે ખોટું ખાતું વપરાશમાં આવે છે. મોડ 0600 પર સેટ કરો અને માલિકી એ ખાતાને આપો જે ક્લાયન્ટ ચલાવે છે.
ક્લાયન્ટ એ ફાઇલ શરૂઆતમાં એક વાર વાંચે છે, તેથી પાસવર્ડ ફેરવવાનો અર્થ પ્રક્રિયા ફરી શરૂ કરવી. સામાન્ય રીતે એ જ વર્તન તમે ઇચ્છો છો, અને તે ફેરવવાની પ્રક્રિયાની બાજુમાં રનબુકમાં હોવું જોઈએ.
બીજો રસ્તો: કીના પાસફ્રેઝ માટે askpass
પાસફ્રેઝથી સુરક્ષિત ખાનગી કી બીજો, અલગ પ્રોમ્પ્ટ ઉભો કરે છે, અને તેનો પોતાનો ફાઇલ-આધારિત જવાબ છે: askpass વિકલ્પ ફાઇલની પ્રથમ લાઇનમાંથી પાસફ્રેઝ વાંચે છે. SSH-આધારિત ટનલ માટે સમકક્ષ એ askpass પ્રોગ્રામ છે જે ક્લાયન્ટ ચલાવે છે, અને તેનું પ્રમાણભૂત આઉટપુટ ગુપ્ત બની જાય છે.
બંને સ્વરૂપોમાંથી કોઈ પણ ગુપ્તને આર્ગ્યુમેન્ટ યાદીમાં મૂકતું નથી, અને બંને તેને ફાઇલ તરીકે અથવા તેને છાપતા એક્ઝિક્યુટેબલ તરીકે રહેવા દે છે. સુરક્ષા ફાઇલ પરવાનગીઓ અને પ્રક્રિયા માલિકી છે, ગુપ્તતા નહીં. કોડમાં લખેલી શબ્દમાળાનું પુનરાવર્તન કરતો સહાયક વધારાના પગલાં સાથેનું ગુપ્ત છે.
ત્રીજો રસ્તો: પોર્ટલ ક્લાયન્ટની પોતાની CLI
એન્ટરપ્રાઇઝ ક્લાયન્ટ સામાન્ય રીતે કમાન્ડ-લાઇન પ્રવેશ બિંદુ આપે છે જે કોઈ વિન્ડો વિના નામવાળા પોર્ટલ સાથે જોડાય છે, અને એ જ સમર્થિત રસ્તો છે. Linux પર GlobalProtect ક્લાયન્ટ તેની CLI દ્વારા કનેક્ટ અને સર્ટિફિકેટ આયાત ક્રિયાઓ આપે છે, અને સર્ટિફિકેટ પ્રમાણીકરણ વાપરતા પોર્ટલને સ્વયં ચાલતા કનેક્ટ પહેલાં આયાત પગલાની જરૂર પડે છે. સંશ્લેષિત કીસ્ટ્રોક કરતાં તેને પ્રાધાન્ય આપો: તમને સાચી એક્ઝિટ સ્થિતિ મળે છે, વિન્ડો ફોકસ પર આધાર નથી, અને તે લૉક થયેલી સ્ક્રીન પર ટકી રહે છે.
જો પ્રથમ કનેક્શનને હજી સર્ટિફિકેટ સ્વીકારવા માટે માણસની જરૂર હોય, તો ઓટોમેશન પૂરું નથી. સેટઅપ દરમિયાન આયાત કરો અને તેને પૂર્વશરત તરીકે નોંધો.
જ્યારે પ્રવાહને સ્યુડો-ટર્મિનલની જરૂર પડે
પહેલા પાસવર્ડ અને પછી એકવાર વપરાતો કોડ માંગતા ક્રમ પાસે વાંચવા માટે એક પણ ફાઇલ નથી. Expect જેવો ટર્મિનલ ડ્રાઇવર યોગ્ય સાધન છે, કારણ કે તે એક પછી એક દરેક પેટર્નની રાહ જુએ છે, અને કંઈ પણ મેળવતા પહેલાં તેને પ્રક્રિયા શરૂ થયેલી જોઈએ.
બે નિષ્ફળતાઓ પ્રબળ છે. ક્લાયન્ટ શરૂ કર્યા વિના પ્રોમ્પ્ટની રાહ જોતી સ્ક્રિપ્ટ કાયમ રાહ જુએ છે, અને Tcl શેલ નથી, તેથી expect બ્લોકની અંદર લખેલી શેલ ગણિત વાંચવામાં આવે તે રીતે ગણાતી નથી. પેટર્ન બનાવતી વખતે ડિબગ ફ્લેગ ચાલુ રાખો, પછી બંધ કરો.
જે ગુપ્ત લીક થાય છે, અને ક્યાં છુપાય છે
આર્ગ્યુમેન્ટ તરીકે મોકલાયેલું કોઈ પણ વસ્તુ પ્રક્રિયા યાદીમાં દેખાય છે, તેથી ઓળખપત્રોની જગ્યા ફાઇલમાં અથવા સહાયકની પાછળ છે, ક્યારેય કમાન્ડ લાઇન પર નહીં. એકવાર વપરાતા કોડ ડિઝાઇન પ્રમાણે વપરાઈ જાય છે અને દરેક પ્રયાસ માટે બનાવવા પડે છે. નિષ્ફળતાના લોગ ઘણી વાર વપરાશકર્તાનામ અને ક્યારેક વધુ લઈ જાય છે, તેથી ક્યાંય મોકલતા પહેલાં તેમને લોપ કરો, અને ગુપ્તને પ્રોફાઇલની બહાર રાખો, કારણ કે અંદર પાસવર્ડ ધરાવતી કન્ફિગ ફાઇલ ટિકિટ અને રિપોઝિટરીમાં પેસ્ટ થાય છે. પછી ખાતું ફેરવવાનો અર્થ દરેક નકલની શિકાર થાય, અને એ જ ખર્ચ આ ગોઠવણ ટાળે છે.
તમે પસંદ કરેલા રસ્તાઓનું ઓડિટ કરો, પછી તેમને એ unit ફાઇલ અથવા શેડ્યુલર સાથે જોડો જે ખરેખર ક્લાયન્ટ ચલાવશે. ટનલ બરાબર તેટલું જ જીવે છે જેટલું એ પ્રક્રિયા જીવે છે.