GitHub पर https:// का उपयोग करते समय पासवर्ड टाइपिंग को छोड़ने का कोई तरीका है?




authentication (16)

OAuth

आप अपना खुद का व्यक्तिगत एपीआई टोकन ( OAuth ) बना सकते हैं और उसी तरह इसका इस्तेमाल कर सकते हैं जैसे आप अपने सामान्य क्रेडेंशियल (जैसे: /settings/tokens ) का उपयोग करेंगे। उदाहरण के लिए:

git remote add fork https://[email protected]/foo/bar
git push fork

.netrc

एक और तरीका है कि अपने उपयोगकर्ता / पासवर्ड को ~/.netrc ( _netrc पर _netrc ) में कॉन्फ़िगर करें, उदाहरण के लिए

machine github.com
login USERNAME
password PASSWORD

Https के लिए:

machine github.com
login USERNAME
password PASSWORD
protocol https

एक क्रेडेंशियल सहायक

गिट में अपने गिटहब पासवर्ड को कैश करने के लिए एचटीटीपीएस का उपयोग करते समय, आप गिटहब से बात करते समय गिटहब उपयोगकर्ता नाम और पासवर्ड को याद रखने के लिए गिट को बताने के लिए एक क्रेडेंशियल हेल्पर का उपयोग कर सकते हैं।

  • मैक: git config --global credential.helper osxkeychain ( osxkeychain helper आवश्यक है),
  • विंडोज़: git config --global credential.helper wincred
  • लिनक्स और अन्य: git config --global credential.helper cache

सम्बंधित:

मैंने हाल ही में अपने रिपॉजिटरीज़ को https: // पर गिटहब (फ़ायरवॉल समस्याओं के कारण) पर सिंक्रनाइज़ करने के लिए स्विच किया है, और यह हर बार पासवर्ड मांगता है। ऐसा लगता था कि मेरे पास एक SSH प्रमाण पत्र था, और यह पर्याप्त था। क्या मेरे मामले में पासवर्ड को बाईपास करने का कोई तरीका है (http / https का उपयोग करके)?


TLDR; गिट 1.8.3+ के साथ एक एन्क्रिप्टेड netrc फ़ाइल का प्रयोग करें।

गिट रिपोजिटरी के लिए पासवर्ड सहेजना HTTPS यूआरएल ~/.netrc (यूनिक्स) या %HOME%/_netrc ( _ पर ध्यान दें) के साथ संभव है।

लेकिन : वह फ़ाइल सादा पाठ में आपका पासवर्ड संग्रहीत करेगी।

समाधान : उस फ़ाइल को जीपीजी (जीएनयू प्राइवेसी गार्ड) के साथ एन्क्रिप्ट करें, और गिट को प्रत्येक बार पासवर्ड की आवश्यकता होती है ( push / pull / fetch / clone ऑपरेशन के लिए)।

विंडोज के लिए चरण-दर-चरण निर्देश

विंडोज के साथ:

(गिट के पास इसके वितरण में gpg.exe है, लेकिन एक पूर्ण जीपीजी इंस्टॉलेशन का उपयोग करके एक gpg-agent.exe , जो आपके जीपीजी कुंजी से जुड़े आपके पासफ्रेज को याद रखेगा।)

  • gpg4Win Lite स्थापित करें, न्यूनतम gpg4Win Lite कमांड लाइन इंटरफ़ेस ( सबसे हालिया gpg4win-vanilla-2.XY-betaZZ.exe ), और GPG स्थापना निर्देशिका के साथ अपना पाथ पूरा करें:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(' copy ' कमांड पर ध्यान दें: Git को ' gpg ' कमांड निष्पादित करने के लिए बैश स्क्रिप्ट की आवश्यकता होगी। चूंकि gpg4win-vanilla-2 gpg2.exe साथ आता है, आपको इसे डुप्लिकेट करने की आवश्यकता है।)

  • एक जीपीजी कुंजी बनाएं या आयात करें, और इसे भरोसा करें:

    gpgp --import aKey
    # or
    gpg --gen-key
    

(उस कुंजी पर पासफ्रेज डालना सुनिश्चित करें।)

  • उस कुंजी पर भरोसा करें

  • अपने %PATH% भीतर निर्देशिका में क्रेडेंशियल सहायक स्क्रिप्ट स्थापित करें:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc
    

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

  • स्पष्ट पाठ में _netrc फ़ाइल बनाएं

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https
    

(यूआरएल के आधार पर ' protocol ' भाग: ' http ' या ' https ' को न भूलें।)

  • उस फ़ाइल को एन्क्रिप्ट करें:

    gpg -e -r a_recipient _netrc
    

(अब आप केवल _netrc.gpg एन्क्रिप्टेड को रखते हुए, _netrc फ़ाइल को हटा सकते हैं।)

  • उस एन्क्रिप्टेड फ़ाइल का प्रयोग करें:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

(ध्यान दें ' / ': C:\path\to... बिल्कुल काम नहीं करेगा।) (आप यह देखने के लिए पहले -v -d पर उपयोग कर सकते हैं कि क्या हो रहा है।)

अब से, HTTP (एस) यूआरएल का उपयोग करने वाले किसी भी गिट कमांड को प्रमाणीकरण की आवश्यकता है जो _netrc.gpg फ़ाइल को डिक्रिप्ट करेगा और जिस सर्वर से आप संपर्क कर रहे हैं _netrc.gpg जुड़े लॉगिन / पासवर्ड का उपयोग करें। पहली बार, फ़ाइल को डिक्रिप्ट करने के लिए, जीपीजी आपको अपनी जीपीजी कुंजी के पासफ्रेज के लिए पूछेगा। दूसरी बार, पहली जीपीजी कॉल द्वारा स्वचालित रूप से लॉन्च जीपीजी-एजेंट आपके लिए पासफ्रेज प्रदान करेगा।

इस तरह, आप एक फ़ाइल में कई यूआरएल / लॉग इन / पासवर्ड याद कर सकते हैं, और इसे अपनी डिस्क एन्क्रिप्टेड पर संग्रहीत कर सकते हैं।
मुझे इसे "कैश" सहायक से अधिक सुविधाजनक लगता है, जहां आपको स्मृति में कैश किए जाने वाले पासवर्ड के लिए, अपनी प्रत्येक दूरस्थ सेवाओं के लिए एक अलग पासवर्ड याद रखने और टाइप करने के लिए (प्रति सत्र एक बार) टाइप करना होगा।


  1. यदि आपके पास पहले से ही एक परियोजना काम कर रही है:

    • your/project/path/.git/config । खोलो इसे। और यूआरएल बदलें
      url = https://[email protected]/project.git
      करने के लिए: url = https://username:[email protected]/project.git
    • या बस उन आदेशों को अपनी परियोजना के रूप में चलाएं:
      git remote rm origin
      git remote add origin https://username:[email protected]/project.git
  2. यदि आप नई परियोजना क्लोन कर रहे हैं:
    git clone https://username:[email protected]/project.git

  3. अपने मौजूदा भंडार से जुड़ रहा है:
    git remote add origin https://username:[email protected]/project.git

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

https://user:[email protected]/...

आप git remote set-url <remote-repo> <URL> साथ यूआरएल बदल सकते हैं

उस दृष्टिकोण के स्पष्ट नकारात्मक पक्ष यह है कि आपको सादा पाठ में पासवर्ड स्टोर करना होगा। आप अभी भी उपयोगकर्ता नाम ( https://[email protected]/... ) दर्ज कर सकते हैं जो कम से कम आपको आधा परेशानी बचाएगा।

आप एसएसएच पर स्विच करना या गिटहब क्लाइंट सॉफ्टवेयर का उपयोग करना पसंद कर सकते हैं।


आप क्रेडेंशियल हेल्पर्स का उपयोग कर सकते हैं।

git config --global credential.helper 'cache --timeout=x'

जहां x सेकंड की संख्या है।


आप गिट को अपने क्रेडेंशियल को निम्नलिखित का उपयोग करके स्थायी रूप से स्टोर कर सकते हैं:

git config credential.helper store

नोट: हालांकि यह सुविधाजनक है, गिट आपकी प्रोजेक्ट निर्देशिका के तहत स्थानीय फ़ाइल (.git-credentials) में स्पष्ट टेक्स्ट में आपके क्रेडेंशियल्स को स्टोर करेगा ("होम" निर्देशिका के लिए नीचे देखें)। यदि आपको यह पसंद नहीं है, तो इस फ़ाइल को हटाएं और कैश विकल्प का उपयोग करने के लिए स्विच करें।

यदि आप गिट को रिमोट रिपोजिटरी से कनेक्ट करने की आवश्यकता होने पर हर बार क्रेडेंशियल्स के लिए पूछना चाहते हैं, तो आप यह आदेश चला सकते हैं:

git config --unset credential.helper

प्रोजेक्ट निर्देशिका के विपरीत आपके %HOME% निर्देशिका में .git-credentials में पासवर्ड संग्रहीत करने के लिए: --global ध्वज का उपयोग करें

git config --global credential.helper store

आम तौर पर आपके पास इस तरह के रिमोट यूआरएल है,

git remote -v

origin  https://gitlab.com/username/Repo.git (fetch)
origin  https://gitlab.com/username/Repo.git (push)

यदि आप गिट पुश का उपयोग करते समय उपयोगकर्ता नाम और पासवर्ड छोड़ना चाहते हैं, तो इसे आज़माएं

 git remote set-url origin https://username:[email protected]/username/Repo.git

मैंने अभी मूल में एक ही यूआरएल (पासवर्ड सहित उपयोगकर्ता विवरण के साथ) जोड़ा है।

नोट: यदि उपयोगकर्ता नाम ईमेल आईडी है तो यह काम नहीं करता है।

git remote -v

origin  https://username:[email protected]/username/Repo.git (fetch)
origin  https://username:[email protected]/username/Repo.git (push)

एक repo क्लोन करने के बाद, आप repo/.git/config को संपादित कर सकते हैं और नीचे कुछ कॉन्फ़िगरेशन जोड़ सकते हैं:

[user]
    name = you_name
    password = you_password
[credential]
    helper = store

फिर आपको username और password फिर से नहीं पूछा जाएगा।


खाता पासवर्ड के बजाय एक प्रमाणीकरण टोकन का उपयोग किया जाना चाहिए। गिटहब सेटिंग्स / एप्लिकेशन पर जाएं और फिर व्यक्तिगत एक्सेस टोकन बनाएं। टोकन का उपयोग उसी तरह किया जा सकता है जैसे पासवर्ड का उपयोग किया जाता है।

टोकन का उद्देश्य उपयोगकर्ताओं को परियोजना के काम के लिए खाता पासवर्ड का उपयोग करने की अनुमति देना है। प्रशासन कार्य करते समय केवल पासवर्ड का उपयोग करें, जैसे कि नए टोकन बनाना या पुराने टोकन को रद्द करना।

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

  1. एक एसएसएच कॉन्फ़िगरेशन फ़ाइल लिखें जिसमें Host , IdentityFile UserKnownHostsFile , तैनाती कुंजी के लिए हो सकता है, शायद UserKnownHostsFile , और शायद User (हालांकि मुझे लगता है कि आपको इसकी आवश्यकता नहीं है)।
  2. एक एसएसएच रैपर खोल स्क्रिप्ट लिखें जो लगभग ssh -F /path/to/your/config $*
  3. अपने सामान्य गिट कमांड के सामने GIT_SSH=/path/to/your/wrapper तैयार करें। यहां git remote (मूल) को [email protected]:user/project.git प्रारूप का उपयोग करना चाहिए।

मुझे gitcredentials (7) मैनुअल पेज से मेरा जवाब मिला। मेरे मामले में, मेरे पास विंडोज़ इंस्टॉलेशन में क्रेडेंशियल-कैश नहीं है; मैं क्रेडेंशियल स्टोर का उपयोग करता हूं।

क्रेडेंशियल-स्टोर का उपयोग करने के बाद, उपयोगकर्ता नाम / पासवर्ड [उपयोगकर्ता फ़ोल्डर] / git-credentials फ़ाइल में संग्रहीत किया जाता है। उपयोगकर्ता नाम / पासवर्ड को हटाने के लिए, बस फ़ाइल की सामग्री हटाएं।


मैं शायद थोड़ा धीमा हो रहा हूं, लेकिन यह मेरे लिए तुरंत स्पष्ट नहीं था कि मुझे पहले सहायक डाउनलोड करने की ज़रूरत थी! मुझे confluence.atlassian.com/display/STASH/… करने पर credential.helper डाउनलोड मिला, उम्मीद है कि इससे मदद मिलती है।

उद्धरण:

यदि आप ओएसएक्स पर क्रेडेंशियल कैशिंग के साथ गिट का उपयोग करना चाहते हैं तो इन चरणों का पालन करें:

बाइनरी गिट-क्रेडेंशियल-ओएसएक्सकीचैन डाउनलोड करें।

बाइनरी निष्पादन योग्य सुनिश्चित करने के लिए नीचे दिए गए आदेश को चलाएं:

chmod a+x git-credential-osxkeychain

इसे निर्देशिका / usr / स्थानीय / बिन में रखें।

नीचे दिए गए आदेश को चलाएं:

git config --global credential.helper osxkeychain

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

यदि आप दो-कारक प्रमाणीकरण का उपयोग कर रहे हैं, तो उपयोगकर्ता नाम / पासवर्ड निर्दिष्ट करना भी काम नहीं करेगा - आपको पहुंच से वंचित कर दिया जाएगा। लेकिन आप एक एप्लिकेशन एक्सेस टोकन का उपयोग कर सकते हैं और आपके लिए कैश करने के लिए गिट के क्रेडेंशियल हेल्पर का उपयोग कर सकते हैं। यहां प्रासंगिक लिंक हैं:

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


यह मेरे लिए काम करता है मैं विंडोज 10 का उपयोग कर रहा हूँ

git config --global credential.helper wincred

यूआरएल के हिस्से के रूप में बस लॉगिन प्रमाण पत्र शामिल करें:

git remote rm origin 
git remote add origin https://username:[email protected]/path/to/repo.git

संगीतकार प्रलेखन mentions कि आप इसे गिटहब एपीआई का उपयोग करने से रोक सकते हैं, ताकि यह git clone तरह कार्य करे:

यदि आप गिटहब रिपॉजिटरी पर no-api कुंजी को true पर सेट करते हैं तो यह गिटहब एपीआई का उपयोग करने के बजाए किसी भी अन्य गिट रिपोजिटरी के साथ भंडार को क्लोन कर देगा। लेकिन सीधे git ड्राइवर का उपयोग करने के विपरीत, संगीतकार अभी भी गिटहब की ज़िप फ़ाइलों का उपयोग करने का प्रयास करेगा।

तो अनुभाग इस तरह दिखेगा:

"repositories": [
    {
        "type": "vcs",
        "no-api": true,
        "url": "https://github.com/your/repo"
    }
],

ध्यान रखें कि एपीआई एक कारण के लिए है। तो यह github.com पर बढ़े हुए भार के संबंध में अंतिम उपाय का एक तरीका होना चाहिए।


सुरक्षा के लिए क्रेडेंशियल्स का उपयोग करना बेहतर है, लेकिन आप इसे कैश का उपयोग करके कुछ समय तक रख सकते हैं

git config --global credential.helper cache
git config credential.helper 'cache --timeout=3600'

आप प्रमाण पत्र 3600 सेकंड के लिए सहेजे जाएंगे।





github