मैं हर बार एक समय में अपने उपयोगकर्ता और पासवर्ड दर्ज किए बिना, GitExtension में एक पुश और पुल का उपयोग करना चाहता हूं ।
तो मैं अपनी साख को कैसे बचा सकता हूं?
मैं हर बार एक समय में अपने उपयोगकर्ता और पासवर्ड दर्ज किए बिना, GitExtension में एक पुश और पुल का उपयोग करना चाहता हूं ।
तो मैं अपनी साख को कैसे बचा सकता हूं?
जवाबों:
Daud
git config --global credential.helper store
फिर
git pull
एक उपयोगकर्ता नाम और पासवर्ड प्रदान करें और उन विवरणों को बाद में याद किया जाएगा। क्रेडेंशियल डिस्क पर एक फ़ाइल में संग्रहीत हैं, "बस उपयोगकर्ता पठनीय / लिखने योग्य" की डिस्क अनुमतियों के साथ लेकिन फिर भी सादे में।
अगर आप बाद में पासवर्ड बदलना चाहते हैं
git pull
विफल हो जाएगा, क्योंकि पासवर्ड गलत है, git तो ~/.git-credentials
फ़ाइल से आपत्तिजनक उपयोगकर्ता + पासवर्ड हटा देता है , इसलिए अब फिर से चलाएँ
git pull
एक नया पासवर्ड प्रदान करने के लिए यह पहले की तरह काम करता है।
आप git config
गिट में भंडारण क्षमता को सक्षम करने के लिए उपयोग कर सकते हैं ।
git config --global credential.helper store
इस कमांड को चलाने के दौरान, पहली बार जब आप रिमोट रिपॉजिटरी से खींचते हैं या धक्का देते हैं, तो आपको उपयोगकर्ता नाम और पासवर्ड के बारे में पूछा जाएगा।
बाद में, दूरस्थ रिपॉजिटरी के साथ परिणामी संचार के लिए आपको उपयोगकर्ता नाम और पासवर्ड प्रदान करने की आवश्यकता नहीं है।
स्टोरेज फॉर्मेट एक .git-credentials
फाइल है, जो प्लेनटेक्स्ट में स्टोर होती है।
इसके अलावा, आप git config credential.helper
मेमोरी कैश के लिए अन्य सहायकों का उपयोग कर सकते हैं :
git config credential.helper cache <timeout>
जो एक वैकल्पिक लेता है timeout parameter
, यह निर्धारित करने के लिए कि कब तक क्रेडेंशियल्स को स्मृति में रखा जाएगा। सहायक का उपयोग करते हुए, क्रेडेंशियल कभी भी डिस्क को नहीं छूएगा और निर्दिष्ट समय समाप्त होने के बाद मिट जाएगा। default
मूल्य है900 seconds (15 minutes).
चेतावनी : यदि आप इस पद्धति का उपयोग करते हैं, तो आपके git खाते के पासवर्ड plaintext
प्रारूप में सहेजे जाएंगे global .gitconfig file
, जैसे कि linux में यह होगा/home/[username]/.gitconfig
यदि यह आपके लिए अवांछनीय है, तो ssh key
इसके बजाय अपने खातों के लिए उपयोग करें।
git config credential.helper cache
पासवर्ड को एक फ़ाइल में सहेजा नहीं जाएगा, केवल स्मृति में संग्रहीत। देखें: git-scm.com/docs/git-credential-cache
अनुशंसित और सुरक्षित विधि: एसएसएच
एक ssh Github कुंजी बनाएँ। पर जाएं github.com -> सेटिंग्स -> SSH और GPG कुंजी -> नई SSH कुंजी। अब अपनी निजी कुंजी को अपने कंप्यूटर में सहेजें।
तो फिर, अगर निजी कुंजी के रूप में सहेजा गया है id_rsa में ~ / .ssh / निर्देशिका है, हम इसे इस तरह के रूप प्रमाणीकरण के लिए जोड़ें:
ssh-add -K ~/.ssh/id_rsa
एक अधिक सुरक्षित तरीका: कैशिंग
हम अपने यूज़रनेम और पासवर्ड को एक समयावधि के लिए कैश करने के लिए git-क्रेडेंशियल-स्टोर का उपयोग कर सकते हैं। बस अपने सीएलआई (टर्मिनल या कमांड प्रॉम्प्ट) में निम्नलिखित दर्ज करें:
git config --global credential.helper cache
आप टाइमआउट अवधि (सेकंड में) को इस तरह सेट कर सकते हैं:
git config --global credential.helper 'cache --timeout=3600'
एक भी कम सुरक्षित तरीका
Git- क्रेडेंशियल-स्टोर का भी उपयोग किया जा सकता है, लेकिन आपके डिस्क पर सादे पाठ फ़ाइल में पासवर्ड को बचाता है:
git config credential.helper store
आउटडेटेड उत्तर - त्वरित और असुरक्षित
यह आपके पासवर्ड को सादे पाठ में संग्रहीत करने की एक असुरक्षित विधि है। यदि कोई आपके कंप्यूटर पर नियंत्रण प्राप्त करता है, तो आपका पासवर्ड सामने आ जाएगा!
आप अपना उपयोगकर्ता नाम और पासवर्ड इस तरह सेट कर सकते हैं:
git config --global user.name "your username"
git config --global user.password "your password"
टर्मिनल में, निम्नलिखित दर्ज करें:
# Set git to use the credential memory cache
git config --global credential.helper cache
डिफ़ॉल्ट रूप से, Git आपके पासवर्ड को 15 मिनट तक कैश करेगा।
डिफ़ॉल्ट पासवर्ड कैश टाइमआउट बदलने के लिए, निम्नलिखित दर्ज करें:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
cache
भाग को बदलें store
। तो, पूरा कमांड होगा git config --global credential.helper store
:। ध्यान दें कि यह आपके पासवर्ड को एक खुले-पाठ फ़ाइल (बिना किसी एन्क्रिप्शन के, इसलिए कहने के लिए) में संग्रहीत करेगा।
--timeout
पैरामीटर के लिए अधिकतम मूल्य क्या है ?
आप अपने क्रेडेंशियल्स~/.gitconfig
को संग्रहीत करने के लिए फ़ाइल को संपादित कर सकते हैं
sudo nano ~/.gitconfig
जो पहले से ही होना चाहिए
[user]
email = your@email.com
user = gitUSER
आपको इस फ़ाइल के नीचे जोड़ना चाहिए।
[credential]
helper = store
मेरे द्वारा इस विकल्प की सिफारिश करने का कारण यह है कि यह वैश्विक है और यदि किसी भी बिंदु पर आपको उस विकल्प को हटाने की आवश्यकता है जिसे आप जानते हैं कि इसे कहां जाना है और इसे बदलना है।
केवल आप कंप्यूटर में इस विकल्प का उपयोग करें।
फिर जब तुम खींचो | क्लोन | आप पासवर्ड दर्ज करें, सामान्य रूप से, पासवर्ड ~/.git-credentials
प्रारूप में सहेजा जाएगा
https://GITUSER:GITPASSWORD@DOMAIN.XXX
जहां DOMAIN.XXX COULD BE GITHUB.COM | BITBUCKET.ORG | अन्य
डॉक्स देखें
बस अपनी साख इस तरह से Url में डालें:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
आप इसे इस तरह स्टोर कर सकते हैं :
git remote add myrepo https://Userna...
... इसका उपयोग करने के लिए उदाहरण :
git push myrepo master
अब यह url उपनामों की सूची बनाना है:
git remote -v
... और यह कि उनमें से एक को हटाने का आदेश:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, नहीं ssh
, इसलिए इस तरह का एक समाधान वहां उपयोगी हो सकता है। यह भी ध्यान दें कि आप एक ऑउथ-टोकन का उपयोग कर सकते हैं, जो कि आपके गीथहब पासवर्ड से थोड़ा अधिक सुरक्षित है।
वैश्विक सेटिंग के लिए, टर्मिनल खोलें (जहां से भी) निम्नलिखित चलाएं:
git config --global user.name "your username"
git config --global user.password "your password"
उसके द्वारा, आपके मशीन पर आपके पास मौजूद कोई भी स्थानीय प्रतिनिधि उस जानकारी का उपयोग करेगा।
आप व्यक्तिगत रूप से प्रत्येक रेपो के लिए कॉन्फ़िगर कर सकते हैं:
निम्नलिखित चलाएं:
git config user.name "your username"
git config user.password "your password"
यह केवल उस फ़ोल्डर को प्रभावित करता है (क्योंकि आपका कॉन्फ़िगरेशन स्थानीय है)।
--local
टैग जोड़ा है, लेकिन फिर कुछ भी नहीं होता है
आप अपने पासवर्ड को डिस्क पर अनएन्क्रिप्टेड स्टोर करने के लिए git-क्रेडेंशियल-स्टोर का उपयोग कर सकते हैं, केवल फ़ाइल सिस्टम की अनुमतियों द्वारा संरक्षित।
उदाहरण
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
आप फ़ाइल में संग्रहीत क्रेडेंशियल्स की जांच कर सकते हैं ~/.git-credentials
अधिक जानकारी के लिए git-क्रेडेंशियल-स्टोर पर जाएं - डिस्क पर क्रेडेंशियल्स स्टोर करने के लिए हेल्पर
यदि आप उपयोगकर्ता नाम / पासवर्ड प्रमाणीकरण की तुलना में SSH प्रमाणीकरण का उपयोग करते हैं तो आप अधिक सुरक्षित होंगे।
यदि आप एक मैक का उपयोग कर रहे हैं, तो SSH क्लाइंट प्रमाणीकरण को MacOS चाबी का गुच्छा में एकीकृत किया गया है। एक बार SSH कुंजी बनाने के बाद, अपने टर्मिनल में टाइप करें:
ssh-add -K ~/.ssh/id_rsa
यह MacH चाबी का गुच्छा में SSH निजी कुंजी जोड़ देगा। जब यह दूरस्थ सर्वर से जुड़ता है तो git क्लाइंट ssh का उपयोग करेगा। जब तक आपने सर्वर के साथ अपनी ssh सार्वजनिक कुंजी पंजीकृत की है, तब तक आप ठीक रहेंगे।
SSH
सकते। HTTP प्रमाणीकरण का उपयोग करते हुए, जो कोई चोरी करता है, उसके पास केवल पहुंच होगी GitHub/GitLab
। इसके अलावा टोकन सीमित जीवन के लिए डिज़ाइन किए गए हैं।
एसओ के दर्जनों पदों, ब्लॉग्स आदि पर जाने के बाद , मैंने हर तरीके को आजमाया , और यही मेरे साथ आया। इसमें सब कुछ शामिल है।
ये सभी तरीके और उपकरण हैं जिनके द्वारा आप एक इंटरैक्टिव पासवर्ड प्रॉम्प्ट के बिना एक रिपॉजिटरी को क्लोन करने के लिए गिट को सुरक्षित रूप से प्रमाणित कर सकते हैं ।
बस काम करना चाहते हैं ™? यह जादू चांदी की गोली है।
अपना एक्सेस टोकन प्राप्त करें (यदि आपके लिए गितुब या गिटिया निर्देशों की आवश्यकता है तो धोखा देती में अनुभाग देखें) और इसे पर्यावरण चर (स्थानीय देव और तैनाती दोनों के लिए) में सेट करें:
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Github के लिए, कॉपी और इन पंक्तियों को चलाने शब्दशः :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
बधाई हो, अब कोई भी स्वचालित टूल क्लोनिंग रिपॉजिटरी को पासवर्ड प्रॉम्प्ट द्वारा बाधित नहीं किया जाएगा, चाहे वह https का उपयोग कर रहा हो या या तो ssh url का स्टाइल।
Github का उपयोग नहीं कर रहे हैं?
अन्य प्लेटफार्मों (Gitea, Github, Bitbucket) के लिए, बस URL बदलें। उपयोगकर्ता नाम न बदलें (हालांकि मनमाने ढंग से, उन्हें अलग-अलग कॉन्फ़िगरेशन प्रविष्टियों के लिए आवश्यक है)।
अनुकूलता
यह मैकओएस, लिनक्स, विंडोज (बाश में), डॉकर, सर्कलसीआई, हरोकू, एककेरिस, आदि में स्थानीय रूप से काम करता है।
और जानकारी
चीटशीट का ".gitconfig बजाय ऑउट" खंड देखें।
सुरक्षा
चीटशीट का "सुरक्षा" खंड देखें।
git config --global credential."https://somegithost.com".username MyUserName
, जो है में अपने cheatsheet, लेकिन नहीं कहीं और इस उत्तर के सूत्र में। यह विशेष समाधान ओपी के सवाल का जवाब नहीं देता है, लेकिन इसने मेरा जवाब दिया, इसलिए धन्यवाद!
उस स्थिति में आपको कमांड लाइन का उपयोग करके अपने GitHub पासवर्ड और उपयोगकर्ता नाम को याद रखने के लिए git को बताने के लिए git क्रेडेंशियल हेल्पर की आवश्यकता है:
git config --global credential.helper wincred
और यदि आप SSH कुंजी का उपयोग करके रेपो का उपयोग कर रहे हैं तो आपको प्रमाणित करने के लिए SSH कुंजी की आवश्यकता है।
ऊपर दिए गए किसी भी उत्तर ने मेरे लिए काम नहीं किया। मैं हर बार निम्नलिखित प्राप्त करना चाहता था जो मैं चाहता था fetch
या pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
मैक के लिए
मैं इसे अपना पासफ़्रेज़ पूछने से रोकने में सक्षम था:
vi ~/.ssh/config
UseKeychain yes
:wq!
विंडोज के लिए
मैं इस स्टैकएक्सचेंज में जानकारी का उपयोग करके काम करने में सक्षम था: https://unix.stackexchange.com/a/12201/348665
~/.gitconfig
फ़ाइल को संपादित करने के अलावा , यदि आप पूछें कि आप क्या कर सकते हैं:
git config --local --edit
या
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
या
git config --global user.name 'your username'
git config --global user.password 'your password'
यदि आप दोहरे उद्धरण चिह्नों का उपयोग करते हैं तो आपका उपयोगकर्ता नाम और पासवर्ड कुछ वर्णों का उपयोग कर सकते हैं जो आपके पासवर्ड को तोड़ देंगे।
--local
या --global
इसका मतलब है कि कॉन्फ़िगरेशन पैरा प्रोजेक्ट या ओएस उपयोगकर्ता के लिए सहेजे गए हैं।
महज प्रयोग करें
git config --global credential.helper store
और git पुल करें , यह उपयोगकर्ता नाम और पासवर्ड मांगेगा, अब से यह उपयोगकर्ता नाम और पासवर्ड के लिए कोई संकेत नहीं देगा, यह विवरण संग्रहीत करेगा
.git-credentials
आपके उपयोगकर्ता नाम और पासवर्ड (एक्सेस टोकन) आपके द्वारा चलाए जाने पर संग्रहीत किए जाते हैं git config --global credential.helper store
, जो कि अन्य उत्तर सुझाते हैं, और फिर अपने उपयोगकर्ता नाम और पासवर्ड या एक्सेस टोकन टाइप करें:
https://${username_or_access_token}:${password_or_access_token}@github.com
तो, उपयोगकर्ता नाम और पासवर्ड (एक्सेस टोकन) को बचाने के लिए:
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
यह github रोबोट के लिए बहुत उपयोगी है, उदाहरण के लिए, विभिन्न शाखा के लिए नियम होने से एक ही docker रिपॉजिटरी में चेन स्वचालित बिल्ड को हल करने के लिए और फिर post_push
docker hub में इसे हुकर में पुश करके ट्रिगर करें ।
इसका एक उदाहरण यहां स्टैकओवरफ्लो में देखा जा सकता है ।
थ्रेड को पूर्ण रूप से पढ़ने और इस प्रश्न के अधिकांश उत्तरों के साथ प्रयोग करने के बाद, मुझे अंततः वह प्रक्रिया मिली जो मेरे लिए काम करती है। मैं इसे साझा करना चाहता हूं अगर किसी को एक जटिल उपयोग के मामले से निपटना है, लेकिन फिर भी पूर्ण धागा और gitcredentials , gitcredentials-store आदि मैन पेजों के माध्यम से नहीं जाना चाहता , जैसा कि मैंने किया था।
नीचे दी गई प्रक्रिया के अनुसार मुझे सुझाव है कि यदि आप (मेरे जैसे) को कई अलग-अलग उपयोगकर्ता नाम / पासवर्ड संयोजन का उपयोग करके कई प्रदाताओं (GitLab, GitHub, Bitbucket, आदि) से कई रिपॉजिटरी से निपटना है। यदि आपके पास काम करने के लिए केवल एक ही खाता है, तो आप बेहतर हो सकते हैं git config --global credential.helper store
या ऐसे git config --global user.name "your username"
समाधानों को नियोजित कर सकते हैं जिन्हें पिछले उत्तरों में बहुत अच्छी तरह से समझाया गया है।
मेरा समाधान:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
नोट : यह कमांड आपके घर निर्देशिका में ".git_repo_credentials" नामक एक नई फ़ाइल बनाता है, जिसमें Git आपके क्रेडेंशियल्स को संग्रहीत करता है। यदि आप एक फ़ाइल नाम निर्दिष्ट नहीं करते हैं, तो Git डिफ़ॉल्ट ".git_credentials" का उपयोग करता है। इस मामले में बस निम्नलिखित आदेश जारी करना होगा:
> git config credential.helper store
git config credential.*.username my_user_name
नोट : "*" का उपयोग करना आमतौर पर ठीक है यदि आपकी रिपॉजिटरी एक ही प्रदाता (जैसे गिटलैब) से हो। यदि इसके बजाय आपके रिपॉजिटरी को अलग-अलग प्रदाताओं द्वारा होस्ट किया जाता है, तो मैं प्रत्येक रिपॉजिटरी के लिए प्रदाता को लिंक को स्पष्ट रूप से सेट करने का सुझाव देता हूं, जैसे कि निम्न उदाहरण (गिटलैब के लिए):
git config credential.https://gitlab.com.username my_user_name
इस बिंदु पर यदि आप अपने क्रेडेंशियल (जैसे git pull
) की आवश्यकता के लिए एक कमांड जारी करते हैं, तो आपको "my_user_name" के अनुरूप पासवर्ड के लिए कहा जाएगा। यह केवल एक बार आवश्यक है क्योंकि git क्रेडेंशियल को ".git_repo_credentials" में संग्रहीत करता है और बाद के एक्सेस में स्वचालित रूप से उसी डेटा का उपयोग करता है।
इस उत्तर से, लिनक्स उबंटू पर rifrol द्वारा टिप्पणी से , यहाँ देखें कि उबंटू में कैसे:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
कुछ अन्य डिस्ट्रो बाइनरी प्रदान करते हैं ताकि आपको इसे बनाने की आवश्यकता न हो।
ओएस एक्स में यह आमतौर पर "ओक्सीक्सचैन" के डिफ़ॉल्ट मॉड्यूल के साथ "निर्मित" आता है, इसलिए आपको यह मुफ्त में मिलता है।
आधिकारिक गिट प्रलेखन की जाँच करें:
यदि आप SSH ट्रांसपोर्ट का उपयोग रीमोट से कनेक्ट करने के लिए करते हैं, तो आपके लिए पासफ़्रेज़ के बिना एक कुंजी होना संभव है, जो आपको अपने उपयोगकर्ता नाम और पासवर्ड में टाइप किए बिना डेटा को सुरक्षित रूप से स्थानांतरित करने की अनुमति देता है। हालांकि, यह HTTP प्रोटोकॉल के साथ संभव नहीं है - हर कनेक्शन को एक उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है। यह दो-कारक प्रमाणीकरण के साथ सिस्टम के लिए और भी कठिन हो जाता है, जहां एक पासवर्ड के लिए आप जिस टोकन का उपयोग करते हैं, वह बेतरतीब ढंग से उत्पन्न और अप्राप्य है।
सौभाग्य से, Git में एक क्रेडेंशियल सिस्टम है जो इसके साथ मदद कर सकता है। बॉक्स में कुछ विकल्प दिए गए हैं:
डिफ़ॉल्ट कैश नहीं है। हर कनेक्शन आपको अपने उपयोगकर्ता नाम और पासवर्ड के लिए संकेत देगा।
"कैश" मोड एक निश्चित अवधि के लिए मेमोरी में क्रेडेंशियल्स रखता है। कोई भी पासवर्ड कभी भी डिस्क पर संग्रहीत नहीं किया जाता है, और उन्हें 15 मिनट के बाद कैश से शुद्ध किया जाता है।
"स्टोर" मोड डिस्क पर एक सादा-पाठ फ़ाइल में क्रेडेंशियल्स को बचाता है, और वे कभी भी समाप्त नहीं होते हैं। इसका मतलब यह है कि जब तक आप Git होस्ट के लिए अपना पासवर्ड नहीं बदलते हैं, तब तक आपको अपने क्रेडेंशियल में फिर से लिखना नहीं पड़ेगा। इस दृष्टिकोण का नकारात्मक पक्ष यह है कि आपके पासवर्ड को आपके होम डायरेक्टरी में एक सादे फ़ाइल में क्लीयरटेक्स्ट में संग्रहीत किया जाता है।
यदि आप एक मैक का उपयोग कर रहे हैं, तो Git एक "osxkeychain" मोड के साथ आता है, जो आपके सिस्टम खाते से जुड़ी सुरक्षित किचेन में क्रेडेंशियल्स को कैश करता है। यह विधि डिस्क पर क्रेडेंशियल्स को संग्रहीत करती है, और वे कभी भी समाप्त नहीं होते हैं, लेकिन वे उसी प्रणाली के साथ एन्क्रिप्टेड होते हैं जो HTTPS प्रमाणपत्र और सफारी ऑटो-फिल्स को संग्रहीत करता है।
यदि आप Windows का उपयोग कर रहे हैं, तो आप "Windows के लिए Git क्रेडेंशियल मैनेजर" नामक एक सहायक स्थापित कर सकते हैं। यह ऊपर वर्णित "ऑक्सकिचेचिन" सहायक के समान है, लेकिन संवेदनशील जानकारी को नियंत्रित करने के लिए विंडोज क्रेडेंशियल स्टोर का उपयोग करता है। यह https://github.com/Microsoft/Git-Credential-Manager-for-Windows पर पाया जा सकता है ।
Git कॉन्फ़िगरेशन मान सेट करके आप इनमें से कोई एक विधि चुन सकते हैं:
$ git config --global credential.helper cache
$ git config --global credential.helper store