Git - उपयोगकर्ता और पासवर्ड को बचाने के लिए विंडोज पर .netrc फ़ाइल का उपयोग कैसे करें


172

जब मैं HTTP और उपयोगकर्ता के पासवर्ड के साथ दूरस्थ रिपॉजिटरी को क्लोन करने के लिए Git का उपयोग कर रहा हूं, तो क्या विंडोज पर .netrc फ़ाइल का उपयोग करना संभव है?

जवाबों:


203

क्या .netrcविंडोज पर फ़ाइल का उपयोग करना संभव है ?

हां आपको जरूर:

  • पर्यावरण चर को परिभाषित करें %HOME% (पूर्व Git 2.0, Git 2.0+ के साथ अब आवश्यक नहीं)
  • में एक _netrcफ़ाइल रखो%HOME%

यदि आप CMDसत्र में Windows 7/10 का उपयोग कर रहे हैं , तो टाइप करें:

setx HOME %USERPROFILE%

और %HOME%' C:\Users\"username"' पर सेट हो जाएगा ।
उस फ़ोल्डर पर जाएं ( cd %HOME%) और ' _netrc' नामक एक फाइल बनाएं ।

नोट: फिर से, विंडोज के लिए, आपको एक ' _netrc' फ़ाइल की आवश्यकता है , कि '.netrc ' फाइल की।

इसकी सामग्री काफी मानक है ( <examples>अपने मूल्यों के साथ बदलें ):

machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>

ल्यूक टिप्पणियों में उल्लेख करता है:

विंडोज 7 पर एमएससिट के नवीनतम संस्करण का उपयोग करते हुए, मुझे HOMEपर्यावरण चर सेट करने की आवश्यकता नहीं थी । _netrcअकेले फ़ाइल चाल किया था।

यह वास्तव में है, जो मैंने " जीथब " करने की कोशिश करते हुएinstall.ssh उल्लेख किया है , वहाँ नहीं है ":
git-cmd.batmsysgit में शामिल %HOME%पर्यावरण चर सेट करता है :

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

爱国者 टिप्पणियों में विश्वास है कि "ऐसा लगता है कि यह http प्रोटोकॉल के लिए काम नहीं करेगा"

हालाँकि, मैंने उत्तर दिया कि netrcइसका उपयोग curlHTTP प्रोटोकॉल के लिए किया जाता है , जैसा कि इस उदाहरण में दिखाया गया है ( netrcपृष्ठ में ' ' देखें)। यहाँ HTTP प्रोटोकॉल के साथ भी प्रयोग किया जाता है: " _netrc/ .netrcवैकल्पिकcURL "।


netrcविंडोज पर समर्थन के साथ एक सामान्य जाल यह है कि अगर इसका उपयोग कोई उपयोगकर्ता नाम निर्दिष्ट करता है तो git बाईपास करेगा।

उदाहरण के लिए, यदि आपकी .git/configफ़ाइल में निम्न शामिल हैं:

[दूरस्थ "मूल"]
     लाने = = refs / सिर / *: refs / remotes / मूल / *
     url = https: //bob@code.google.com/p/my-project/

Git _netrcआपके उपयोगकर्ता नाम को हटाने के लिए आपके क्रेडेंशियल्स को हल नहीं करेगा , जैसे:

[दूरस्थ "मूल"]
     लाने = = refs / सिर / *: refs / remotes / मूल / *
     url = https://code.google.com/p/my-project/

वैकल्पिक समाधान: के साथ Git संस्करण 1.7.9+ (जनवरी 2012): इस उत्तर से मार्क Longair विवरण क्रेडेंशियल कैश तंत्र जो भी आप के लिए अनुमति देता नहीं जैसा कि नीचे दिखाया सादे पाठ में आपका पासवर्ड संग्रहीत।


साथ Git 1.8.3 (अप्रैल 2013):

अब आप एक एन्क्रिप्टेड .netrc (के साथ gpg) का उपयोग कर सकते हैं ।
विंडोज पर: %HOME%/_netrc( _, 'नहीं .')

फाइलों के साथ बातचीत करने के लिए एक नया रीड-ओनली क्रेडेंशियल हेल्पर (इन contrib/) .netrc/.authinfoजोड़ा गया है।

वह स्क्रिप्ट आपको सादे टेक्स्ट फ़ाइल में संग्रहीत अपने क्रेडेंशियल्स के मुद्दे से बचने के लिए, gpg-एन्क्रिप्टेड netrc फ़ाइलों का उपयोग करने की अनुमति देगा ।

.gpgएक्सटेंशन वाली फाइलों को पार्स करने से पहले GPG द्वारा डिक्रिप्ट किया जाएगा।
एकाधिक -fतर्क ठीक हैं। उन्हें क्रम में संसाधित किया जाता है, और पाया गया पहला मिलान प्रविष्टि क्रेडेंशियल सहायक प्रोटोकॉल के माध्यम से लौटाया जाता है।

जब कोई -fविकल्प दिया जाता है, .authinfo.gpg, .netrc.gpg, .authinfo, और .netrcअपने घर निर्देशिका में फ़ाइलों को इस क्रम में किया जाता है।

इस विश्वसनीय सहायक को सक्षम करने के लिए:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(ध्यान दें कि Git git-credential-सहायक नाम के लिए " " आगे बढ़ेगा और पथ में इसे खोजेगा।)

# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'

#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'

" का उपयोग करते समय पासवर्ड टाइपिंग को छोड़ने का एक तरीका हैhttps:// github " पर एक पूर्ण उदाहरण देखें


Git 2.18+ (जून 2018) के साथ, अब आप एन्क्रिप्टेड .netrcफ़ाइल को डिक्रिप्ट करने के लिए उपयोग किए जाने वाले GPG प्रोग्राम को कस्टमाइज़ कर सकते हैं ।

देखें प्रतिबद्ध 786ef50 , f07eeed प्रतिबद्ध द्वारा (12 मई 2018) लुइस Marsano ( ``)
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 017b7c5 , 30 मई 2018)

git-credential-netrc: gpgविकल्प स्वीकार करें

git-credential-netrcgpggpg.program विकल्प की परवाह किए बिना ' ' के साथ डिक्रिप्ट करने के लिए हार्डकोड किया गया था ।
यह डिबियन जैसे वितरण पर एक समस्या है जो आधुनिक GnuPG को कुछ और कहते हैं, जैसे ' gpg2'


@ बियर: HOMEपर्यावरण चर महत्वपूर्ण है, क्योंकि यह डिफ़ॉल्ट रूप से विंडोज पर परिभाषित नहीं है। आप उस चर को अपनी इच्छित निर्देशिका में सेट कर सकते हैं (यह होना जरूरी नहीं है C:\users\mylogin): उदाहरण के लिए, काम पर, मैंने इसे अपने विंडोज खाते से जुड़े अपने निजी रिमोट डिस्क पर सेट किया है, जो मुझे बिना खोए बिना डेस्कटॉप स्विच करने की अनुमति देता है मेरी .sshया _netrcसेटिंग्स।
वॉनसी

@Bernd: यह भी जांचें कि क्या आपका Git रेपो LAN या WAN (इंटरनेट) सर्वर पर है। आपको http.proxyअपने पर्यावरण चर में परिभाषित करने की आवश्यकता हो सकती है । या, इसके विपरीत, अपने सर्वर को एक no_proxyचर में जोड़ने के लिए , WAN पर LAN सर्वर तक पहुँचने की कोशिश से बचने के लिए।
वॉनसी

पर्यावरण चर के लिए नाम और मूल्य क्या है? क्या आप
डेनिस डी

@ डेनिसड: मेरे द्वारा उत्तर में और टिप्पणी में दो पर्यावरण चर, गृह और http_proxy हैं। गृह आपके इच्छित किसी भी निर्देशिका को संदर्भित करेगा। यदि आपके पास एक है तो http_proxy प्रॉक्सी पते को संदर्भित करेगा।
VonC

msysgitविंडोज 7 पर नवीनतम संस्करण का उपयोग करते हुए , मुझे HOMEपर्यावरण चर सेट करने की आवश्यकता नहीं थी । _netrcअकेले फ़ाइल चाल किया था।
ल्यूक

35

आप इसके लिए Windows क्रेडेंशियल प्रबंधक में Git पासवर्ड सहेजने के लिए Windows के लिए Git क्रेडेंशियल प्रबंधक भी स्थापित कर सकते हैं _netrc। यह पासवर्ड स्टोर करने का अधिक सुरक्षित तरीका है।


8
शानदार जवाब, यह एकमात्र ऐसा उत्तर है जो मैंने पाया है कि मुझे उस SSH बकवास से निपटने के लिए बिना उपयोगकर्ता नाम / पासवर्ड (सुरक्षित रूप से) की सरलता बनाए रखने की सुविधा मिलती है।
Kirk Woll

@KirkWoll ऊपर मेरा अपडेट उत्तर देखें: अब आप एक एन्क्रिप्टेड .netrcफ़ाइल में अपने क्रेडेंशियल्स को स्टोर कर सकते हैं । आपको सत्र के दौरान एक बार भी उन क्रेडेंशियल को दर्ज नहीं करना पड़ेगा।
वॉन

11

यह Git को HTTPS का उपयोग करके प्रमाणित करने देगा .netrc:

  • फ़ाइल का नाम _netrcऔर में स्थित होना चाहिए c:\Users\<username>
  • आपको एक पर्यावरण चर नामक सेट करने की आवश्यकता होगी HOME=%USERPROFILE%(नियंत्रण कक्ष में सिस्टम विकल्प का उपयोग करके सिस्टम-वाइड वातावरण चर सेट करें। विंडोज के संस्करण के आधार पर, आपको "उन्नत विकल्प" चुनने की आवश्यकता हो सकती है।)।
  • _netrcफ़ाइल में संग्रहीत पासवर्ड में स्थान नहीं हो सकता (पासवर्ड काम नहीं करेगा)।

सबसे सरल और सबसे अच्छा समाधान। एंड्रॉइड स्टूडियो, सोर्स ट्री और गिट कमांड लाइन के साथ आकर्षण की तरह काम किया। जब Google ने क्लाउड एसडीके क्रेडेंशियल.हेलपर विकल्प की सिफारिश की थी, तो मुझे इसका उपयोग करना पड़ा था और मैन्युअल रूप से नेट सीसी फ़ाइल के साथ क्रेडेंशियल्स और उपयोग उत्पन्न करना था। मेरे मामले में मुझे विकल्प 2 और 3 की आवश्यकता नहीं थी
हरि

1

मैं उपयोग करने का एक तरीका पोस्ट कर रहा हूं _netrc साइट www.course.com से सामग्री डाउनलोड करने हूं।

अगर कोई www.coursera.com पर ओपन-क्लास सामग्री डाउनलोड करने के लिए coursera-dl का उपयोग करने जा रहा है, और Windows OS पर कोई व्यक्ति ".netrc" जैसी फ़ाइल का उपयोग करना चाहता है, जो कि जैसे- Unix OS में है। सुविधा के -nबदले विकल्प -U <username> -P <password>। वह ऐसा कर सकता है:

  1. Windows OS पर होम पथ की जाँच करें: setx HOME %USERPROFILE%( VonC के उत्तर को देखें )। यह HOMEपर्यावरण चर के रूप में बचाएगा C:\Users\"username"

  2. निर्देशिका में पता लगाएँ C:\Users\"username"और एक फ़ाइल नाम बनाएँ _netrcनोट: कोई प्रत्यय नहीं है। सामग्री इस प्रकार है:machine coursera-dl login <user> password <pass>

  3. coursera-dl -n --path PATH <course name>क्लास सामग्रियों को डाउनलोड करने के लिए एक कमांड का उपयोग करें । इस पृष्ठ के लिए अधिक शोध-विकल्प विकल्प विवरण ।

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