विंडोज पर बैश के साथ निजी एसएसएच कुंजी साझा करें


18

मेरे पास Git इंस्टॉल के साथ विंडोज 10 है। यह Git मेरे C:/Users/MyNamedir को गृह निर्देशिका और dir के रूप में उपयोग करता /.ssh/है, उचित रूप से मेरी निजी SSH कुंजियों के लिए सोर्सिंग के लिए।

मैंने बस सक्षम किया है और "विंडोज पर उबंटू पर बैश" सेटअप किया है (जो एक कौर है!) और इसमें गिट भी स्थापित किया है। मैं चाहूंगा कि दोनों गिट एक ही तरह की चाबियों का इस्तेमाल करें, इससे कोई फर्क नहीं पड़ता कि मैं इस मशीन पर किस माहौल में काम करता हूं, मेरे कमिट हमेशा मुझसे आएंगे।

परेशानी यह है कि घर को दारू में अलग है ( /home/MyName) और इस प्रकार यह अब दूर स्थित कुंजियों को नहीं देखता है ../../mnt/c/Users/MyName/.ssh। मुझे लगा कि मैं घर के वातावरण चर का उपयोग करके एक विजेता पर होगा

export HOME=/c/mnt/Users/MyName

इसने गृह dir को सफलतापूर्वक बदल दिया लेकिन bash git को अभी भी ./.sshdir के भीतर मौजूद कुंजियाँ दिखाई नहीं देती हैं ।

मुझे यकीन नहीं है कि अगर यह ए) है क्योंकि बैश गिट एक अलग फ़ाइल प्रारूप में चाबियाँ की उम्मीद करता है? (वर्तमान वाले हैं id_rsaऔर id_rsa.pubबी) बैश गिट बदले हुए गृह चर को अनदेखा कर रहे हैं? या शायद दोनों।

मुझे यकीन नहीं है कि C) यदि मनमाने ढंग से गृह चर को बदल दिया जाए तो यह सामान्य wrt अन्य कार्यक्रमों में एक अच्छा विचार है जो इसे संदर्भित कर सकते हैं?


2
लगता है कि यह एक सिम्कलिन का समय है।
तेलस्टिन

हम्म .sshपहले से ही मौजूद है /home/MyName... क्या कोई सिम्क्लिन फाइल कर सकता है? ऐसा मैं करूँगा ln -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa? (सहानुभूति के लिए भी नया!)
टॉबी

बूम! कि एक इलाज काम करता है! @Telastyn यदि आप अपनी टिप्पणी को एक उत्तर में देना चाहते हैं तो मैं स्वीकार करूंगा :-) (हालाँकि मैं अभी भी अनिश्चित हूं कि होम वैर को बदलते हुए पहली जगह पर काम क्यों नहीं किया गया)
तोबी

2
यह बेहतर काम करता है यदि आप पूरी .sshनिर्देशिका को सहानुभूति देते हैं ।
त्रिवेणी

1
मेरा स्मरण है कि PuTTY अपना सामान पूरी तरह से कुछ अलग स्थान पर रखता है, लेकिन यह एक साल से अधिक हो गया है क्योंकि मुझे आखिरी बार विंडोज को छूना था (धन्यवाद $ dmr)
tripleee

जवाबों:


19

इसलिए जैसा कि टेलस्टीन ने टिप्पणी की थी कि मैंने WSL ~/.ssh/में id_rsa और id_rsa.pub में सहानुभूति जोड़ी है :

> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub

सिम्पीनल डायरेक्टरी को ट्रिपली द्वारा सुझाई गई लिंक के बजाय उसी तकनीक का उपयोग करते हुए, मेरे पास मुद्दे थे जब तक कि मैंने नहीं देखा कि lnकमांड में मैंने जो ट्रेलिंग स्लैश का उपयोग किया था (टैब कुंजी का उपयोग करके निर्देशिका नाम को भरने के लिए छोड़ दिया गया था) एक मुद्दा था। इस प्रकार, ऊपर करने के बजाय एक बेहतर कर सकता है:

> ln -s /mnt/c/Users/Myname/.ssh ~/.ssh

ज्ञात_होस्ट फ़ाइल विंडोज़ में इसके उपयोग के लिए थोड़ी भिन्न होती है (विंडोज़ में ssh- एजेंट का उपयोग करने में पावरशिट में git) और WSL में इसका SSH उपयोग, जिससे होस्ट-नाम और आईपी विंडोज संस्करण में हैशेड नहीं हैं। Ssh-config के लिए मैन पेज के अनुसार, इस हैशिंग को अक्षम करने के लिए एक ध्वज उपलब्ध है, जिसका मतलब है कि SSH ने हैशिंग के बिना फाइल को समझा होगा जो अब तक काम कर चुकी है।

इस उत्तरार्द्ध विधि का मतलब है कि दो अलग-अलग वातावरणों के बीच उपयोग किए जाने वाले एसएसएच के लिए विवरण बिल्कुल समान हैं।

एक छोटे लेकिन महत्वपूर्ण लापता चरित्र की ओर इशारा करने के लिए माटुज का धन्यवाद!


3
इसे > ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa"~" जोड़ना चाहिए । नहीं?
मटज कृस

7
ध्यान दें कि उपयोग करने के लिए नहीं है private keysसे bash on windowsलोगों को करता है तो s linkनिर्देशिकाओं के बीच। ऐसा ssh agentकरने से निजी कुंजी फ़ाइलों पर खराब अनुमति के बारे में शिकायत होगी । चूंकि विंडो से माउंट की गई फाइलें उनकी अनुमति नहीं बदली जा सकती हैं।
ओक

@ क्या यह बैश के साथ बिल्कुल भी संभव है?
टी जे ज्यॉन्जर

@TjGienger आपका क्या मतलब है?
ओक

@oak, क्या यह शायद एंटिटी ब्लैक नीचे ठीक करने की कोशिश कर रहा है ? या कि एक अलग मुद्दे को संबोधित कर रहा है?
15

11

नए बिल्ड "इनसाइडर बिल्ड 17063" के आधार पर फ़ाइलों के लिए अनुमतियाँ अब अलग तरह से काम करती हैं। संक्षेप में आपको करने की आवश्यकता है:

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata

यह आपके ssh फोल्डर के काम की अनुमति देगा जैसा कि आपको चाहिए। उसके बाद ओपी ने अपने जवाब में सुझाव दिया।

प्रासंगिक लिंक:

https://github.com/Microsoft/WSL/issues/3181 https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/

संपादित करें

मैं इस सवाल पर वापस आ गया हूं क्योंकि मुझे पता है कि यह केवल अस्थायी समाधान है (हां मैं बेवकूफ हूं)। हर बार जब आप अपने WSL को फिर से शुरू (लॉगआउट) करते हैं, तो आपको इस कमांड को फिर से डालना होगा।

तो अब मेरे लिए जो समाधान काम करता है, वह /etc/wsl.confमेरे wsl ubuntu में फ़ाइल को बनाने (बनाने) को संपादित करने के लिए है , और निम्नलिखित में डाल दिया गया है, फिर पुनः आरोह करने के लिए पुनः आरंभ करें:

# Enable extra metadata options by default, set uid and gid to 0
[automount]
options = "metadata,uid=,gid="

मैं मेटाडेटा क्यों जोड़ता हूं:

लिनक्स अनुमतियों को फ़ाइल में अतिरिक्त मेटाडेटा के रूप में जोड़ा जाता है। इसका मतलब है कि एक फाइल में लिनक्स और विंडोज रीड / राइट / एक्ज़िट बिट्स हो सकते हैं।

यूआईडी और जीआईडी ​​क्यों सेट करें:

डिफ़ॉल्ट रूप से, WSL डिफ़ॉल्ट उपयोगकर्ता के मान को यूआईडी और जीआईडी ​​सेट करता है (उबंटू डिस्ट्रो में, डिफ़ॉल्ट उपयोगकर्ता को यूआईडी = 1000, जीआईडी ​​= 1000 के साथ बनाया जाता है)। यदि उपयोगकर्ता इस कुंजी के माध्यम से स्पष्ट रूप से एक gid या uid विकल्प निर्दिष्ट करता है, तो संबंधित मान अधिलेखित हो जाएगा। अन्यथा, डिफ़ॉल्ट मान हमेशा जोड़ा जाएगा।

प्रासंगिक लिंक:

https://docs.microsoft.com/en-us/windows/wsl/wsl-config https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/ https: / /blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.