Bitbucket पर Git: हमेशा मेरी सार्वजनिक SSH कुंजी अपलोड करने के बाद भी पासवर्ड मांगा जाता है


180

मैं अपने अपलोड ~/.ssh/id_rsa.pubकरने के लिए Bitbucket की SSH कुंजियों के रूप में बताया गया है , लेकिन अभी भी Git मुझे हर आपरेशन (जैसे पर अपने पासवर्ड के लिए पूछता git pull)। क्या मैं कुछ भुल गया?

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

git clone git@bitbucket.org:Nicolas_Raoul/therepo.git

यहाँ मेरा स्थानीय है .git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

एक ही सार्वजनिक कुंजी के साथ एक ही वातावरण में, गिट पर गीथ ठीक काम करता है।
.sshहै rwx------, .ssh/id_rsaहै -rw-------, .ssh/id_rsa.pubहै-rw-r--r--

जवाबों:


265

क्या आप वाकई ssh url का उपयोग करके क्लोन कर रहे हैं?

उत्पत्ति के लिए यूआरएल का कहना है url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.gitकि अगर यह https का उपयोग कर रहा है तो यह आपकी ssh कुंजियों के बावजूद पासवर्ड मांगेगा।

तो आप जो करना चाहते हैं वह निम्नलिखित है:

अपने वर्तमान रेपो में अपनी कॉन्फिग फ़ाइल खोलें ..

vim .git/config

और url से लाइन बदलें

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git

सेवा

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

62
आप सही कह रहे हैं, धन्यवाद! मेरे पास शायद सबसे गलत URL था। मैंने URL को .git/configइसमें बदल दिया git@bitbucket.org:Nicolas_Raoul/therepo.gitऔर अब यह काम करता है!
निकोलस राउल


3
यह एक बिटबकेट था जिसने मुझे रिपॉजिटरी बनाते समय https url का सुझाव दिया था! कैसे!
डेनिस नियाज़ेव

4
ध्यान रखें कि यदि आपका बिटकॉइन निजी है, यदि आप गिट प्रोटोकॉल का उपयोग करना चाहते हैं, तो आपको अपनी सेटिंग्स में बिटबकेट की वेबसाइट पर ssh कुंजी जोड़ना होगा।
केवरिस

7
URL को बदलना था ssh://git@bitbucket.org/userName/repoName.git- बिना ssh://उपसर्ग के यह काम नहीं किया।
२३:१३ पर trygub

34

जैसा कि यहाँ बताया गया है , यदि आप SSH url के साथ क्लोन करते हैं , तो आपको हर बार पुश / पुल करते समय उपयोगकर्ता नाम / पासवर्ड दर्ज करने की आवश्यकता नहीं है। उत्तर के ऊपर की जाँच करें@Manojlds द्वारा

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

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

जहां 3600 (सेकंड) का अर्थ है 1 घंटे, आप इसे अपनी आवश्यकता के अनुसार बदल सकते हैं।


@atilkan उस मामले में, क्या आप अपनी मशीन / OS और git संस्करण जानकारी प्रदान कर सकते हैं? और अगर आप कैश सेटिंग सेट करने का प्रयास करते हैं तो त्रुटि संदेश।
अजीत शाह

मैंने किसी के रिपॉजिटरी फॉर्म को बिटकॉइन के रूप में क्लोन किया, और यहाँ मेरे रिमोज़ हैं। manecs-MBP:LocationTracker manec$ git remote -v origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (fetch) origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (push)
बन्नी इशाक के

@AjeetShah अगर मैंने गलत पासवर्ड डाला तो क्या होगा? क्या यह गलत पासवर्ड को भी कैश करेगा?
आँवल

@anaval आप ऐसा क्यों नहीं करते हैं और उसके बाद कैश साफ़ करने या अक्षम करने के बाद सही पासवर्ड दर्ज करने का प्रयास करते हैं? उत्तर संपादित करें और हमें बताएं कि आपने ऐसा कैसे किया :)
अजीत शाह

19

इसका पहले से ही ऊपर जवाब दिया। मैं उपरोक्त जाँच करने के लिए चरणों का सारांश दूंगा।

git remote -vपरियोजना dir में चलाएं । यदि आउटपुट दूरस्थ url को दिखाता हैhttps://abc तो आपको हर बार उपयोगकर्ता नाम पासवर्ड की आवश्यकता हो सकती है।

इसलिए रिमोट यूरल रन को बदलना git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}

अब दौड़ो git remote -v परिवर्तित दूरस्थ url को सत्यापित करने के लिए ।

देखें: https://help.github.com/articles/changing-a-remote-s-url/


16

भविष्य से नमस्ते गोगलर्स।

MacOS> = उच्च सिएरा पर, SSH कुंजी अब कारणों के कारण KeyChain में नहीं बचती है

ssh-add -Kअब और जीवित रहने का उपयोग करना पुनः आरंभ करता है।

यहां 3 संभावित समाधान दिए गए हैं

मैंने पहली विधि का सफलतापूर्वक उपयोग किया है। मैं एक फ़ाइल बुलाया बना लिया है configमें ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

2
इस पर अधिक ध्यान देने की आवश्यकता है! मैं एक समाधान की तलाश में उम्र बिताता है और सही काम करता है configमें फ़ाइल के साथ पहला /.ssh!
किट्सन

1
इस उत्तर ने मैकओ पर मेरी समस्या को हल किया: cd ~/.ssh+ ls+ nano config(फ़ाइल पहले ही बनाई गई थी) + वैडन के उत्तर में कोड जोड़ें। फिर फ़ाइल को बचाने के लिए X + Y को नियंत्रित करें।
सेबास्टियन गिक्वेल

9

HTTP अनुरोध मामले में, क्रेडेंशियल्स (पासवर्ड के साथ) को सीधे url में पेस्ट करना भी वैकल्पिक रूप से संभव है:

http://username:password@bitbucket.org/...

यह दर्द को हर बार फिर से अपनी साख देने के लिए बचाएगा। सरल अपने .it / config (url) को संशोधित करें।


10
लेकिन सुरक्षित नहीं है। और काम नहीं करता है अगर पासवर्ड में कुछ अक्षर है जैसे$%
Gank

3
जो कोई भी इस टिप्पणी को पढ़ता है, कृपया याद रखें: क्योंकि यह काम करता है , इसका मतलब यह नहीं है कि यह सही है । यदि आप अपने पासवर्ड को स्थायी रूप से कहीं भी कॉपी कर रहे हैं, तो आप इसे गलत कर रहे हैं। उन लोगों के साथ जो हमेशा फ़ोल्डर अनुमतियाँ सेट करते हैं 777: रुकें, सोचें, अनुसंधान करें, समझें, और फिर इसे ठीक से करें।
dKen

9

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

ssh-add -K ~/.ssh/id_rsa

यह तब आपको अपने पासवर्ड के लिए संकेत देगा और इसे संग्रहीत करेगा। यह वह समाधान हो सकता है जिसकी आप तलाश कर रहे हैं यदि हर बार पासवर्ड के लिए आपके द्वारा कहा गया हो

कुंजी '/Uours//.ssh/id_rsa' के लिए पासफ़्रेज़ दर्ज करें:

अधिक जानकारी यहाँ

नोट: मैंने इसका उपयोग अपने मैक मशीन पर सफलतापूर्वक किया, लेकिन जैसा @Rob Kwasowski ने बताया, ऊपरी मामला K विकल्प मैक के लिए अद्वितीय है। यदि मैक पर नहीं है तो आपको लोअरकेस का उपयोग करने की आवश्यकता होगी k(जो संभवतः मैक के लिए भी काम करता है लेकिन मैंने परीक्षण नहीं किया है)।


1
यह बहुत अच्छा है, लेकिन यह कम होना चाहिए k:ssh-add -k ~/.ssh/id_rsa
रोब क्वासोस्की

क्या आप कृपया विस्तार से बता सकते हैं?
ढेरपश्चर

जैसा कि यहाँ बताया गया है: ssh.com/ssh/add , कमांड लाइन विकल्प लोअरकेस है k, अपरकेस के रूप में नहीं क्योंकि वे विकल्प संवेदनशील हैं।
रोब क्वासोवस्की

सही है लेकिन अपरकेस K विकल्प कुंजी को किचेन में जोड़ेगा, जबकि लोअरकेस k केवल एजेंट के लिए कुंजी जोड़ेगा। इसलिए मैं पूछ रहा हूं कि 'आप चाहते हैं कि चाबी भी आपके किचेन में क्यों डाली जाए?'
ढेरपश्चर

1
कृपया प्लेटफ़ॉर्म के अंतर से अवगत रहें, -Kमैक के लिए विशिष्ट है: help.github.com/en/articles/error-ssh-add-illegal-option----k
Rob Kwasowski

5
  • चरण 1: git-credential-winstore https://confluence.atlassian.com/bitbucketserver/permanently-authenticating-with-git-repositories-776639846.html स्थापित
    करें

  • चरण 2: git config --global credential.helper 'cache - टाइमआउट 3600'
    यह आपके पासवर्ड को एक घंटे के लिए संग्रहित करेगा

  • चरण 3: एक git कमांड चलाएं जो आपको आपके पासवर्ड के लिए संकेत देगा और क्रेडेंशियल आपके पासवर्ड को संकेत देगा और संग्रहीत करेगा

मुझे लगता है कि Step 1यह है Windowsऔर Step 2के लिए है, Linuxलेकिन आप इसे भूल गए इसे ठीक से उल्लेख करते हैं।
अजीत शाह

मैंने अपने विंडोज बॉक्स पर उन 3 चरणों को चलाया और यह काम कर गया।
वेबदेव

2
उस स्थिति में, मैं यह कहना चाहूंगा कि लिनक्स OS पर, हमें समान प्रभाव के लिए केवल step2 और step3 की आवश्यकता है :)
Ajeet Shah

4

बिटकबेट के लिए iTerm / Terminal के माध्यम से कमांड-लाइन एक्सेस निम्नलिखित है।

के लिए MacOS सिएरा 10.12.5, अपने सिस्टम एक समान समस्या प्रकट - bitbucket करने के लिए प्रत्येक कनेक्शन पर मेरी SSH पदबंध के लिए पूछ रहा।

समस्या को MacOS 10.12.2 में OpenSSH अपडेट के साथ करना है, जो यहां तकनीकी नोट TN2449 में वर्णित हैं

आप बहुत अच्छी तरह से अपने समाधान को दर्जी बनाना चाह सकते हैं, लेकिन जब आपकी ~ / .ssh / config फाइल में जोड़ा जाएगा तो निम्नलिखित काम करेगा।

Host *
    UseKeychain yes

Ssh config पर अधिक जानकारी के लिए, ssh_config के मैन पेजों पर एक नज़र डालें:

% man ssh_config

एक और बात: यहां सुपरसुअर पर एक अच्छा लेखन हुआ है जो आपकी आवश्यकताओं और सेटअप के आधार पर इस समस्या और विभिन्न समाधानों पर चर्चा करता है।


2

मैंने SSH URL के बजाय HTTPS URL के साथ रिपॉजिटरी को क्लोन किया, इसलिए SSH कुंजी जोड़ने के बाद भी यह मुझसे बैश शेल पर पासवर्ड मांग रहा था।

मैंने अभी ./.git/configफाइल को एडिट किया है और urlवेरिएबल की वैल्यू को बदलकर केवल https://करने के लिए बदल दिया हैssh://

उदाहरण के लिए

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

में परिवर्तित किया गया:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

1

आपको अपनी SSH पहचान फ़ाइल को दोबारा जांचना पड़ सकता है। आप BitBucket पर सहेजे गए समतुल्य सार्वजनिक कुंजी के लिए एक भिन्न / गलत निजी कुंजी को देखने के लिए BitBucket का मार्गदर्शन कर सकते हैं।

इसके साथ जांचें tail ~/.ssh/config- आपको कुछ समान दिखाई देगा:

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

याद रखें, कि अतिरिक्त पहचान (जैसे काम और घर) को ssh-addकमांड के साथ किया जा सकता है , उदाहरण के लिए:

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

एक बार जब आपने पुष्टि कर ली कि कौन सी निजी कुंजी स्थानीय स्तर पर देखी जा रही है, तो आप इस मामले में अपने सार्वजनिक समकक्ष को ले सकते हैं:

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

और उस सिफर को BitBucket पर पेस्ट करें। आपका गिट पुश अब होगा (बशर्ते आप SSH क्लोन का उपयोग कर रहे हैं क्योंकि उपरोक्त उत्तर दिए गए हैं) पासवर्ड के बिना अनुमति दी जाती है, क्योंकि आपका डिवाइस एक मान्यता प्राप्त अनुकूल है।

उम्मीद है कि यह किसी के लिए इसे स्पष्ट करने में मदद करता है।


0

मेरे साथ, हालाँकि मैंने 'git clone ssh: //git@stash.xxx.com: 7999 / projName / projA.git' चलाया, लेकिन मुझे अभी भी इस नए रेपो के लिए पासवर्ड के लिए प्रेरित किया जा रहा था जिसे मैंने क्लोन किया था, इसलिए इसकी तुलना करने के लिए। उस काम के लिए अन्य फाइल में कॉन्फ़िगर करें, यह [दूरस्थ "मूल"] अनुभाग के तहत url निकला, यह नए रेपो के लिए ऊपर ssh पथ पर सेट किया गया था, लेकिन कार्य करने के लिए https: xxx पर सेट किया गया था ।


0

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

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