command line - Can't git clone by adding ssh-key in Node.js -
# डिस्क fs.writeFile के लिए SSH- कुंजी लिखें "/cgrepos/.ssh/#{repo Id} .pub ", repo.public_key, (err) - & gt; अगर गलती करें fs.writeFile "/cgrepos/.ssh/#{repo.id}", repo.private_key, (err) - & gt; अगर err exec "chmod 400 /cgrepos/.ssh/#{repo.id} & amp; eval` ssh-agent -s` और amp; ssh- जोड़ें /cgrepos/.ssh/#{repo.id पर गलती करें } ", (त्रुटि) - & gt; त्रुटि को फेंक दें # पहले, हार्ड ड्राइव पर जीआईटी रेपो हटा दें, अगर यह मौजूद है "rm -rf # {git_location}", विकल्प, (त्रुटि) - & gt; त्रुटि # सेकंड में त्रुटि को फेंक दें, स्थान console.log में "रेपो" क्लोनिंग करें # # {repo.id}: # {grep_location} में # {repo.repo_name}। इसमें एक मिनट "exec" git क्लोन # Repo.url} # {git_location} ", विकल्प, (त्रुटि) - & gt; त्रुटि त्रुटि मैं कोशिश कर रहा हूँ कि नोड में ( कॉफी का उपयोग उन लोगों के लिए जो भयानक हैं)। लेकिन किसी कारण के लिए, जब यह चलता है, तो मुझे एक त्रुटि देता है: त्रुटि: कमांड विफल: conq: रिपॉज़िटरी एक्सेस अस्वीकृत तैनाती कुंजी अनुरोधित रिपॉजिटरी से संबद्ध नहीं है। निश्चित नहीं कि मैं क्या गलत कर रहा हूं अगर मैं उन आदेशों को सीधे कमांड लाइन से चलाता हूँ, तो सब कुछ ठीक काम करता है। कोई भी विचार?
जब आप नोड से git क्लोन प्रक्रिया निष्पादित करने का प्रयास करते हैं जेएस, यह अलग-अलग वातावरण में चलता है। जब आप सुरक्षित (एसएसपी प्रोटोकॉल पर) संरक्षित पर git क्लोन का उपयोग करते हैं, तो ssh-agent पहले प्रमाणित करने का प्रयास करता है आप प्रदान की गई सार्वजनिक कुंजी के साथ चूंकि exec प्रत्येक कॉल के लिए विभिन्न रनटाइम वातावरण का उपयोग करता है, भले ही आप अपनी निजी कुंजी को स्पष्ट रूप से जोड़ रहे हों, यह अलग-अलग रनटाइम वातावरण के कारण काम नहीं करेगा। जब एसएसएच , Git क्लोन SSH_AUTH_SOCK के लिए दिखता है। सामान्यतया इस env चर में आपकी पासवर्ड कीरिंग सेवा का मार्ग (gnome-keyring या kde-wallet) है। इसे पहले से जांचने के लिए इसे आज़माएं।
env | Grep -i ssh इसे SSH_AGENT_PID और SSH_AUTH_SOCK को सूचीबद्ध करना चाहिए समस्या तब होती है जब git क्लोन चल रहा है इन वातावरण चर सेट नहीं हैं तो आप उन्हें सेट कर सकते हैं (बस SSH_AUTH_SOCK पर्याप्त है) के रूप में exec फ़ंक्शन कॉल में विकल्प। एविम के लिए एन्वाइ कुंजी को जोड़े कैसे करें। var exec = की आवश्यकता है ('child_process')। Exec, child; बच्चे = exec ('git क्लोन क्लोनुरल', {cwd: cwdhere, // git क्लोन env के लिए काम कर रहे पथ: {envVar1: envVarValue1, SSH_AUTH_SOCK: socketPathHere}}, कॉलबैक); यदि यह काम नहीं करता है, तो exec फ़ंक्शन में ssh -vvv user @ git-repo-host निष्पादित करने का प्रयास करें। इस प्रक्रिया का उत्पादन देखें, आपको त्रुटि मिलेगी। यदि त्रुटि कहती है डीबग 1: कोशिश करने के लिए अब और प्रमाणीकरण विधियों नहीं हैं अनुमति अस्वीकृत (प्रकाशक)। , फिर एक मेजबान उपनाम को $ HOME / .ssh / config फाइल में जोड़ें। मेजबान होस्टलाइज होस्टनाम git-repo-host पहचान फ़ाइल ~ /। Ssh / your_private_key_path यह निर्दिष्ट होस्ट के लिए सभी authntication अनुरोधों में प्रदान की गई निजी कुंजी का उपयोग करेगा। इस विकल्प में, उपरोक्त फाइल में कॉन्फ़िगर किए गए होस्टलाइज का उपयोग करने के लिए आप अपना मूल का url भी बदल सकते हैं। reporoot / .git / config फ़ाइल इस तरह दिखाई देगी। [दूरस्थ "मूल"] url = user @ hostalias: repo.git
Comments
Post a Comment