"Git क्लोन git@remote.git" चलाते समय मैं एक उपयोगकर्ता नाम और पासवर्ड कैसे प्रदान करूं?


844

मुझे पता है कि इस तरह HTTPS अनुरोध के लिए एक उपयोगकर्ता नाम और पासवर्ड कैसे प्रदान करें:

git clone https://username:password@remote

लेकिन मैं यह जानना चाहता हूं कि इस तरह से रिमोट को यूजरनेम और पासवर्ड कैसे दिया जाए:

git clone git@remote.git

मैंने इस तरह की कोशिश की है:

git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password

लेकिन उन्होंने काम नहीं किया।


4
आप नहीं कर सकते। "@" से पहले "git" पहले से ही उपयोगकर्ता नाम है। आपको रिपॉजिटरी URL (git@remote.get) कहां से मिला? आपको यह विचार कहां से मिला कि आपको एक अलग उपयोगकर्ता नाम और पासवर्ड प्रदान करना है?
केन थॉमासेस

3
मेरा repos URL heroku "git@heroku.com: zxy-helloworld.git" से है। और मैं इमैक शेल का उपयोग क्लोन और पुश करने के लिए करता हूं। यदि शेल पासवर्ड मांगता है, तो इमैक्स हैंग हो जाएंगे। यह विंडोज पर emacs के साथ एक ज्ञात मुद्दा है: gnu.org/software/emacs/windows/…
समन्वयित करें

क्या होगा यदि उपयोगकर्ता नाम एक ईमेल है? आप इसे कैसे टाइप करते हैं? myemail @ gmail.com @ example.com ?
क्योन पेरेज़

जवाबों:


1316

माइकल शर्फ की टिप्पणी पर आधारित:

आप पासवर्ड छोड़ सकते हैं ताकि वह आपकी बैश इतिहास फ़ाइल में लॉग इन न हो:

git clone https://username@github.com/username/repository.git

यह आपको आपके पासवर्ड के लिए संकेत देगा।

वैकल्पिक रूप से, आप उपयोग कर सकते हैं:

git clone https://username:password@github.com/username/repository.git

इस तरह मेरे लिए एक GitHub भंडार से काम किया।


5
यह वैसे ही होने की जरूरत नहीं है। यदि आपके सहयोगी ने गिट रेपो बनाया है और आप दूसरे खाते के रूप में लॉग इन कर रहे हैं, तो वे समान नहीं होंगे।
होलगैस

48
यह फ़ाइल। URL / config पर सहेजे जाने के लिए URL में पासवर्ड डालना उचित नहीं है। सुरक्षित नहीं है, ssh कुंजी का उपयोग करना बेहतर है
zetanova

55
@ कोई समस्या नहीं है, इसे से बचो (% 40 iirc के रूप में)।
बेंजामिन ग्रुएनबाम

57
आप पासवर्ड छोड़ सकते हैं git clone https://username@github.com/username/repository.git:। git आपसे पूछेगा और इसे .it / config में सेव नहीं किया जाएगा और न ही आपके बैश इतिहास में
Michael_Scharf

36
आप लाइन की शुरुआत में 'स्पेस' भी टाइप कर सकते हैं ताकि लाइनक्स इतिहास में कमांड को स्टोर न करे
निकोलस ज़ोलोल

212

user@host:path/to/repoप्रारूप उपयोग ssh करने के लिए Git बताता में लॉग इन करने hostउपयोगकर्ता नाम के साथ user। से git help clone:

एक वैकल्पिक एससीपी-जैसे सिंटैक्स का उपयोग ssh प्रोटोकॉल के साथ भी किया जा सकता है:

[user@]host.xz:path/to/repo.git/

@उपयोगकर्ता नाम से पहले का हिस्सा है, और प्रमाणीकरण विधि (पासवर्ड, सार्वजनिक कुंजी, आदि) ssh द्वारा निर्धारित की जाती है, Git से नहीं। Git के पास ssh के लिए पासवर्ड पास करने का कोई तरीका नहीं है, क्योंकि ssh रिमोट सर्वर के कॉन्फ़िगरेशन के आधार पर भी पासवर्ड का उपयोग नहीं कर सकता है।

उपयोग ssh-agentसे बचने टाइपिंग के लिए हर समय पासवर्ड

यदि आप अपना ssh पासवर्ड हर समय टाइप नहीं करना चाहते हैं, तो विशिष्ट समाधान यह है कि आप सार्वजनिक / निजी कुंजी जोड़ी बनाएं , सार्वजनिक ~/.ssh/authorized_keysफाइल को रिमोट सर्वर पर रखें, और अपनी निजी कुंजी लोड करें ssh-agent। इसके अलावा एक बार लॉगिन करने के लिए SSH के ऊपर Git कॉन्फ़िगर करना देखें , ssh कुंजी पासफ़्रेज़ पर GitHub का हेल्प पेज , gitolite का ssh डॉक्यूमेंटेशन और Heroku का ssh कीज़ डॉक्यूमेंटेशन

GitHub (या हरोकू या ...) में कई खातों के बीच चयन

यदि आपके पास GitHub या Heroku जैसी जगह पर कई खाते हैं, तो आपके पास कई ssh कुंजियाँ (कम से कम एक प्रति खाता) होंगी। आपको किस खाते में लॉग इन करना है, यह चुनने के लिए, आपको ssh को बताना होगा कि किस निजी कुंजी का उपयोग करना है

उदाहरण के लिए, मान लीजिए कि आपके पास दो GitHub खाते हैं: fooऔर bar। आपकी ssh कुंजी fooहै ~/.ssh/foo_github_idऔर आपकी ssh कुंजी barहै ~/.ssh/bar_github_id। आप git@github.com:foo/foo.gitअपने fooखाते के git@github.com:bar/bar.gitसाथ और अपने साथ पहुंचना चाहते हैंbar खाता। आप निम्नलिखित को अपने साथ जोड़ेंगे ~/.ssh/config:

Host gh-foo
    Hostname github.com
    User git
    IdentityFile ~/.ssh/foo_github_id
Host gh-bar
    Hostname github.com
    User git
    IdentityFile ~/.ssh/bar_github_id

फिर आप दो रिपॉजिटरी को निम्नानुसार क्लोन करेंगे:

git clone gh-foo:foo/foo.git  # logs in with account foo
git clone gh-bar:bar/bar.git  # logs in with account bar

Ssh से पूरी तरह से बचना

कुछ सेवाएं HTTP एक्सेस को ssh के विकल्प के रूप में प्रदान करती हैं:

  • GitHub:

    https://username:password@github.com/username/repository.git
    
  • Gitorious:

    https://username:password@gitorious.org/project/repository.git
    
  • Heroku: इस समर्थन लेख देखें

चेतावनी : अपना पासवर्ड क्लोन URL में जोड़ने से Git आपके सादे पासवर्ड को स्टोर कर लेगा.git/config । HTTP का उपयोग करते समय अपने पासवर्ड को सुरक्षित रूप से संग्रहीत करने के लिए, एक क्रेडेंशियल सहायक का उपयोग करें। उदाहरण के लिए:

git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git

ऊपर हर 15 मिनट (डिफ़ॉल्ट रूप से) से एक बार आपके पासवर्ड के लिए Git का कारण होगा। git help credentialsविवरण के लिए देखें।


यह सबसे अच्छा स्पष्टीकरण है कि git SSH के साथ कैसे काम करता है। मेरी समझ यह है कि जब आप git@githost.com निर्दिष्ट करते हैं: पथ / / to / repo.git, यह प्रभावी रूप से git को बताता है कि उपयोगकर्ता स्वयं git है और यह ssh- एजेंट से आपकी साख (सार्वजनिक कुंजी) को हथियाना चाहिए। होस्ट "githost.com"।
अनाल

39

@ बस्सेटसेन के उत्तर की टिप्पणियों में , @plosco ने उल्लेख किया कि आप उपयोग कर सकते हैंgit clone https://<token>@github.com/username/repository.git बहुत कम से कम से क्लोन का । मुझे लगा कि मैं इस बात का विस्तार करूंगा कि ऐसा करने पर कोई भी इस तरह का जवाब दे सकता है, जैसे मैंने कुछ क्लोनिंग को स्वचालित करने की कोशिश की थी।

GitHub के पास यह करने के लिए एक बहुत आसान मार्गदर्शिका है, लेकिन यह नहीं करता है कि क्या करना है अगर आप स्वचालन उद्देश्यों के लिए इसे एक पंक्ति में शामिल करना चाहते हैं। यह चेतावनी देता है कि क्लोन URL में टोकन जोड़ने से यह प्लेनटेक्स्ट में स्टोर हो जाएगा .git/config । यह स्पष्ट रूप से लगभग हर उपयोग के मामले के लिए एक सुरक्षा जोखिम है, लेकिन जब से मैंने रेपो को हटाने और टोकन को रद्द करने की योजना बनाई है, जब मैं कर रहा हूं, तो मुझे परवाह नहीं है।

1. एक टोकन बनाएँ

GitHub के पास टोकन प्राप्त करने के तरीके के बारे में एक संपूर्ण मार्गदर्शिका है , लेकिन यहाँ TL; DR;

  1. पर जाएं सेटिंग> डेवलपर सेटिंग> व्यक्तिगत पहुँच टोकन ( यहाँ एक सीधा लिंक है )
  2. "एक नया टोकन उत्पन्न करें" पर क्लिक करें और फिर से अपना पासवर्ड दर्ज करें। (h ere दूसरे प्रत्यक्ष लिंक )
  3. इसके लिए एक विवरण / नाम सेट करें, "रेपो" अनुमति की जांच करें और पृष्ठ के निचले भाग में "जनरेट टोकन" बटन दबाएं।
  4. पेज छोड़ने से पहले अपने नए टोकन को कॉपी करें

2. क्लोन रेपो

जैसा कि कमांड @plosco ने दिया था git clone https://<token>@github.com/<username>/<repository>.git, बस प्रतिस्थापित करें <token>, <username>और<repository> आपकी जानकारी जो भी हो।

यदि आप इसे किसी विशिष्ट फ़ोल्डर में क्लोन करना चाहते हैं, तो बस फ़ोल्डर का पता अंत में डालें जैसे:, git clone https://<token>@github.com/<username>/<repository.git> <folder>जहाँ <folder>, आपने यह अनुमान लगाया है, फ़ोल्डर को इसे क्लोन करने के लिए! आप निश्चित रूप से उपयोग कर सकते हैं ., ..,~ जैसे आप कहीं और कर सकते हैं यहां, आदि।

3. नो ट्रेस छोड़ दें

यह सब आवश्यक नहीं हो सकता है, यह इस बात पर निर्भर करता है कि आप कितना संवेदनशील हैं।

  • आप शायद उस टोकन को इधर-उधर नहीं छोड़ना चाहते हैं यदि आपके पास कुछ समय के लिए इसे इस्तेमाल करने का कोई इरादा नहीं है, तो टोकन पृष्ठ पर वापस जाएं और इसके बगल में हटाएं बटन दबाएं।
  • यदि आपको फिर से रेपो की आवश्यकता नहीं है, तो इसे हटा दें rm -rf <folder>
  • अगर आपको फिर से रेपो की जरूरत है, लेकिन इसे फिर से स्वचालित करने की आवश्यकता नहीं है, तो आप रिमोट को हटा सकते हैं git remote remove originया केवल रनिंग द्वारा टोकन हटा सकते हैंgit remote set-url origin https://github.com/<username>/<repository.git>
  • यह सुनिश्चित करने के लिए अपना बैश इतिहास साफ़ करें कि टोकन वहाँ लॉग इन नहीं रहता है। ऐसा करने के कई तरीके हैं, इस प्रश्न और इस प्रश्न को देखें । हालाँकि, इसे शुरू करने के लिए संग्रहित किए जाने से रोकने के लिए एक स्थान के साथ उपरोक्त सभी कमांडों को पहले से तैयार करना आसान हो सकता है।

ध्यान दें कि मैं समर्थक नहीं हूं, इसलिए उपरोक्त इस अर्थ में सुरक्षित नहीं हो सकता है कि किसी भी प्रकार के फोरेंसिक कार्य के लिए कोई निशान नहीं छोड़ा जाएगा।


1
https://<token>@github.comमेरी पोर्टल के साथ स्वीकार नहीं किया गया है, मैं का इस्तेमाल किया थाhttps://oauth2:<token>@github.com
MushyPeas

25

हालांकि कई जवाब हैं, खुद को बार-बार समस्या का सामना करना पड़ रहा है जब उपयोगकर्ता नाम या पासवर्ड में विशेष वर्ण हैं।

URL आपके उपयोगकर्ता नाम और पासवर्ड को git के लिए कूटबद्ध करता है, फिर इसे URL के भाग के रूप में उपयोग करें (जब कोई सुरक्षा चिंता न हो)।

कहो, URL ने उपयोगकर्ता नाम का मान एन्कोड किया

'उपयोगकर्ता + 1' उपयोगकर्ता% 2B1 है

और यूआरएल पासवर्ड का कूटबद्ध मूल्य

'वेलकम @ 1234' वेलकम% 401234 है

तब आपका जीआईटी क्लोन URL जैसा दिखेगा,

git clone https://user%2B1:Welcome%401234@actual-git-url-for-the-repo पूरी तरह से काम करता है, जबकि,

git clone https: // user + 1: आपका स्वागत है @ 1234 @ वास्तविक- git-url-for-the-repo आपको 403 त्रुटियां देता है

उम्मीद है की यह मदद करेगा।

बस के मामले में, ऑनलाइन URL एनकोड करना चाहते हैं: https://www.urlencoder.org/


13

मैंने इस समस्या को निम्नलिखित तरीके से हल किया:

यहां छवि विवरण दर्ज करें


11
कमांड लाइन में अपना पासवर्ड टाइप करने के लिए एक अच्छा विचार नहीं है। क्या आप जानते हैं कि आपका सिस्टम किसी फाइल में कमांड लाइन हिस्ट्री स्टोर कर सकता है? : (पूर्व लिनक्स एक छिपा फ़ाइल का नाम .bash_history है)
ऑगस्टो

सही बात। जब भी मैं ऐसा करता हूं, या ऐसा कुछ होता है, जो कई बार बहुत सुविधाजनक हो सकता है, तो मैं हमेशा इतिहास (इतिहास -d) से उपयोग की गई कमांड को हटा देता हूं।
फ्रांसेस्को मार्केटी-स्टैसी

4
@ FrancescoMarchetti-Stasi आपको कमांड को हटाने की आवश्यकता नहीं है, बस कमांड की शुरुआत में एक जगह का उपयोग करें और यह इतिहास में कभी संग्रहीत नहीं होगा।
इश्तियाक हुसैन

हां - मैंने इसे कुछ महीने पहले ही सीखा था, यूनिक्स सिस्टम पर लगभग 30 साल बाद ... मुझ पर शर्म करो :)
फ्रांसेस्को मार्केटी-स्टैसी

9

Windows पर , निम्न चरणों को git cloneआईएनजी जब GitHub लॉगिन विंडो को फिर से ट्रिगर करना चाहिए :

  • "क्रेडेंशियल मैनेजर" के लिए खोज प्रारंभ मेनू
  • "विंडोज क्रेडेंशियल्स" चुनें
  • Git या GitHub से संबंधित किसी भी क्रेडेंशियल्स को हटा दें

परिणाम


7

यदि वे कोई समस्या पैदा कर रहे हैं तो ur विशेष मामलों को बदलने के लिए इस तर्क का पालन करें:

! # $ & '() * +, /:; =? @ []

% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3%% 3F% 40% 5B% 5D

इसलिए उदाहरण के लिए-

वास्तविक URL: https: // usern @ me: p @ ssword @ git / reponame.git

उपयोग करने के लिए समाधान URL: https: // usern 40 40me: p%40ssword@git/reponame.git


5
git config --global core.askpass

उसी तरह से क्लोनिंग करने से पहले इसे पहले चलाएं, इसे ठीक किया जाना चाहिए!


3
कोशिश की कि एक, अभी भी इसके लिए नहीं पूछता है।
मैर्टन कीफ़्ट

वैश्विक कॉन्फ़िगरेशन सेट करना कभी भी एक अच्छा विचार नहीं है क्योंकि यह अन्य क्लोन को गड़बड़ कर सकता है।
मार्टिन

1

यह एक उत्कृष्ट स्टैक ओवरफ्लो प्रश्न है, और उत्तर बहुत ही शिक्षाप्रद हैं, जैसे कि मैं हाल ही में भागे एक कष्टप्रद समस्या को हल करने में सक्षम था।

संगठन है कि मैं Atlassian's BitBucketउत्पाद (Github) का उपयोग करता है के लिए काम करते हैं , अनिवार्य रूप से GitHub के उनके संस्करण ताकि रिपॉजिटरी को पूरी तरह से आधार पर सुरक्षित किया जा सके। मैं @coordinate के समान समस्या में चल रहा था, जिसमें मेरे पासवर्ड को मेरे द्वारा चेक किए गए नए भंडार के लिए आवश्यक था। सभी BitBucketपरियोजनाओं के लिए विश्व स्तर पर मेरी साख बचाई गई थी , इसलिए मुझे यकीन नहीं है कि क्या क्रेडेंशियल्स का नुकसान हुआ।

संक्षेप में, मैं निम्नलिखित GIT कमांड ( केवल मेरे उपयोगकर्ता नाम की आपूर्ति ) दर्ज करने में सक्षम था , जिसने तब Git के क्रेडेंशियल प्रबंधक को पासवर्ड के लिए संकेत देने के लिए प्रेरित किया, जिसे मैं तब सहेजने में सक्षम था।

git clone https://user@code.domain.org/git/[organization]/[team]/[repository.git]

नोट: कोष्ठक निर्देशिका उप-पथ केवल आंतरिक संदर्भों को संदर्भित करते हैं, और आपके लिए अलग-अलग होंगे!


0

यदि आप उपयोग कर रहे हैं http/httpsऔर आप पूरी तरह से किसी भी उपयोगकर्ता इनपुट या किसी भी उपयोगकर्ता संकेत की आवश्यकता के बिना इस प्रक्रिया को स्वचालित रूप से देख रहे हैं (उदाहरण के लिए: CI / CD पाइपलाइन के अंदर), तो आप निम्नलिखित दृष्टिकोण का उपयोग कर सकते हैंgit credential.helper

GIT_CREDS_PATH="/my/random/path/to/a/git/creds/file"
# Or you may choose to not specify GIT_CREDS_PATH at all.
# See https://git-scm.com/docs/git-credential-store#FILES for the defaults used

git config --global credential.helper "store --file ${GIT_CREDS_PATH}"
echo "https://alice:${ALICE_GITHUB_PASSWORD}@github.com" > ${GIT_CREDS_PATH}

जहाँ आप सेट करना चुन सकते हैं ALICE_GITHUB_PASSWORD पिछली शेल कमांड से या अपने पाइपलाइन विन्यास आदि से पर्यावरण चर ।

याद रखें कि सादा-पाठ में "स्टोर" आधारित गिट-क्रेडेंशियल-हेल्पर पासवर्ड और मान संग्रहीत करता है। इसलिए सुनिश्चित करें कि आपके टोकन / पासवर्ड की बहुत सीमित अनुमति है।


अब बस का उपयोग https: //alice@github.com/my_repo.git जहाँ भी अपने स्वचालित प्रणाली की जरूरत है रेपो लाने के लिए - यह साख के लिए इस्तेमाल करेगा aliceमें github.comGit-क्रेडेंशियल-हेल्पर द्वारा दुकान के रूप में।

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