2016-02-18 8 views
5

मुझे सिगविन के साथ गिट का उपयोग करने की कोशिश करते समय समस्या है। मैं बना लेने के बाद और GitLab सर्वर से ssh कुंजी जोड़ा गया है और सब कुछ MINGW64 के माध्यम से बस ठीक काम करता है (क्लोनिंग, खींच, आदि), लेकिन मैं Cygwin उपयोग करना चाहता था और पाया कि यह काम नहीं करता।सिगविन एसएस कुंजी ने जोड़ा, लेकिन गिट अनुमति से इनकार कर दिया गया (publickey)

हालांकि मैंने अपनी जेनरेट की गई कुंजी की प्रतिलिपि ~/user/.ssh फ़ोल्डर में रखी है और मैन्युअल रूप से कुंजी जोड़ दी है, इसलिए "ssh-add -l" इसे सूची में प्रिंट करता है, लेकिन जब मैं भंडार लाने की कोशिश करता हूं (या कोई अन्य सर्वर कमांड) मैं बस प्राप्त करता हूं:

Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

यह एक बग जैसा दिखता है, लेकिन संभवतः मैं कुछ गलत कर रहा हूं। क्या किसी को यह समस्या मिली? धन्यवाद।

अद्यतन: साइगविन में ओपनएसएसएच संस्करण को नए में अपडेट करने के बाद, ऊपर वर्णित समस्या मैंने चली गई है।

+0

क्या आपके पास गिट सर्वर में जोड़े गए 'ssh-add -L' द्वारा मुद्रित की गई एक ही सार्वजनिक कुंजी है? – Jakuje

+0

हाँ, मैं एक ही कुंजी है कि पहले से ही Cygwin के उपयोगकर्ता फ़ोल्डर में Git बैश के लिए काम किया है और उसी तरह से यह जोड़ा जोड़ दिया है। और मेरे पास सर्वर पर और उपयोगकर्ता फ़ोल्डर में भी एक ही सार्वजनिक कुंजी है। तो मैं वास्तव में इस तरह के व्यवहार से उलझन में हूँ। – mmelnik

+0

MINGW64 में अंतर और आप के लिए cygwin क्या है? क्या आपके पास सिग्विन शैल में एजेंट और कनेक्शन है जहां से आप क्लोन करते हैं? – Jakuje

उत्तर

1

एजेंट को केवल दौड़ना नहीं है, लेकिन आपके टूल्स को पता होना चाहिए कि एजेंट कहां सुन रहा है। यह चर $SSH_AUTH_SOCK में संग्रहित है और अगर यह एक टर्मिनल से आप के लिए काम करता है, यह एक दूसरे से की जरूरत नहीं है।

यदि आप इसे अपने नेटबीन में काम करना चाहते हैं, तो आपको नेटबीन पर्यावरण चर में इस चर को इंजेक्ट करने की आवश्यकता है (लेकिन यह सुनिश्चित नहीं है कि इसे कैसे किया जाए ताकि इसे विंडोज वातावरण से नेटबीन में सिग्विन टर्मिनल में पारित किया जा सके)।

या इसे बाद में चलने वाले टर्मिनल में डालें (संभवतः .bashrc या अन्य स्टार्टअप स्क्रिप्ट का उपयोग कर)। सरल परीक्षण का मामला MinGW टर्मिनल में echo $SSH_AUTH_SOCK होगा और उसके बाद Cygwin टर्मिनल में export SSH_AUTH_SOCK=/the/path/you/got/from/previous/command लिखें।

बाद में आप चर को कुछ फ़ाइल में संग्रहीत करके स्वचालित कर सकते हैं, जिसे आप सिगविन में पढ़ सकते हैं।

# MinGW scriplet 
echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> ~/agent_env 

# Cygwin scriplet 
. ~/agent_env 

फिर आप अपने मिंगव एजेंट को साइगविन खोल से उपयोग करने में सक्षम होना चाहिए।

+0

उत्तर के लिए धन्यवाद!मुझे आपका मुद्दा मिल गया है, लेकिन यह मेरे लिए स्पष्ट नहीं है कि मुझे एजेंट को मिनगब्लू से सिग्विन तक क्यों रखा जाना चाहिए, क्योंकि वे अलग-अलग एजेंटों के साथ दो अलग टर्मिनल हैं (विभिन्न SSH_AUTH_SOCK)। और वे अलग-अलग .bashrc कॉन्फ़िगरेशन (अधिकतर वही) और अलग संसाधन फ़ोल्डरों का उपयोग करते हैं (विशेष रूप से सिगविन जिसमें इसका स्वयं का * निक्स-जैसे आधारभूत संरचना है)। क्या आप मुझे यह समझा सकते हैं, कृपया? मैंने पहले उल्लेख किया था कि मैंने दोनों एजेंटों में अपनी कुंजी जोड़ दी है। – mmelnik

+1

समस्या यह है कि उनमें से कोई भी विंडोज़ में मूल नहीं है और दोनों मूल विंडोज के ऊपर स्टैंडअलोन परत के रूप में व्यवहार करते हैं और दूसरे के बारे में नहीं जानते (और विभिन्न स्टैंडअलोन गोले के बीच पर्यावरण साझा करने का कोई उचित तरीका नहीं है, क्योंकि * NIX प्रक्रियाएं एक-दूसरे से पर्यावरण प्राप्त करने के लिए डिज़ाइन किए गए हैं और पहला आपका सत्र है जिसमें आपको आवश्यकता है)। आप शायद दूसरे से एक खोल चला सकते हैं, लेकिन शायद मूल विंडोज़ अनुप्रयोग नहीं। – Jakuje

+0

यही कारण है कि मैं आपसे पूछता हूं कि मुझे एजेंट को दो गोले के बीच क्यों साझा करना है। मैं एक समय में केवल एक का उपयोग करता हूं। आइए कल्पना करें कि मेरे पास मिनजीडब्ल्यू था और यह ठीक काम कर रहा था, लेकिन अब मैं पूरी तरह से सिगविन में जाना चाहता हूं और एसएसएच कुंजी के साथ उस समस्या को मिला, इस तथ्य के बावजूद कि सभी कॉन्फ़िगरेशन मेरे लिए ठीक लगते हैं। – mmelnik

0

मेरे लिए, कारण है कि मैं C:\Users\username\.ssh में मेरे ssh महत्वपूर्ण फाइलों को डाल दिया है (जो cygwin में /cygdrive/c/Users/username/.ssh है), लेकिन वास्तव में, आप ~/.ssh में आपकी SSH कुंजियां डाल करने के लिए यह काम करने की जरूरत है। वे दो अलग-अलग निर्देशिकाएं हैं।

मेरी समस्या हल करने के लिए साइगविन में निम्न आदेश चलाएं।

cp /cygdrive/c/Users/username/.ssh/* ~/.ssh/ 

ध्यान दें कि आपको अपने वास्तविक एक के साथ username को प्रतिस्थापित करना चाहिए।

संबंधित मुद्दे