मर्क्यूरियल के साथ यूज़रनेम और पासवर्ड कैसे सेव करें?


269

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

मैंने .hgrcअपने होम डायरेक्टरी में फ़ाइल में निम्न जोड़ने की कोशिश की , लेकिन यह पूरी तरह से नजरअंदाज किया गया लगता है।

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

यह सही तरीके से कैसे करें?

जवाबों:


328

आप अपनी .hgrcया Mercurial.iniफ़ाइल में एक अनुभाग बना सकते हैं , जैसे:

[auth]
bb.prefix = https://bitbucket.org/repo/path
bb.username = foo
bb.password = foo_passwd

'Bb' भाग एक मनमाना पहचानकर्ता है और इसका उपयोग उपसर्ग और पासवर्ड के साथ मेल खाने के लिए किया जाता है - विभिन्न साइटों (उपसर्ग) के साथ अलग-अलग उपयोगकर्ता नाम / पासवर्ड कम्बोस के प्रबंधन के लिए आसान है।

आप केवल उपयोगकर्ता नाम भी निर्दिष्ट कर सकते हैं, फिर आपको धक्का देने पर बस अपना पासवर्ड लिखना होगा।

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


3
जब सर्वर है तो यह काम क्यों नहीं करता है: ssh: // HGSERVER? "ssh: // उपयोगकर्ता नाम: पासवर्ड @ HGSERVER" प्रारूप या तो काम नहीं करता है ..
ओरेन

1
@ ऑरेन - नीचे की टिप्पणी देखें - यदि आप एसएसएच का उपयोग कर रहे हैं, तो कुंजी-आधारित लॉगिन का उपयोग क्यों नहीं करें?
डेविड एडा्स

@santafebound जैसा कि पाठ कहता है, इसका "मनमाना" और इसका उपयोग केवल उपसर्ग के साथ उपयोगकर्ता नाम और पासवर्ड को जोड़ने के लिए किया जाता है ताकि कोई भी टैग प्रदान करें जो आपके लिए समझ में आता है।
क्रिस मैकॉले

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

170

ऐसा करने के तीन तरीके हैं: .hgrc फ़ाइल का उपयोग करें, ssh का उपयोग करें या कीरिंग एक्सटेंशन का उपयोग करें


1. INSECURE तरीका - अपनी ~ / .hgrc फाइल को अपडेट करें

मेरे लिए काम करने वाला प्रारूप (मेरी ~ / .hgrc फ़ाइल में) यह है

[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password


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

यह केवल मर्क्यूरियल 1.3 में काम करता है और जाहिर है कि आपका उपयोगकर्ता नाम और पासवर्ड सादे पाठ में हैं - अच्छा नहीं है।


2. सुरक्षित तरीका - पासवर्ड का उपयोग करके SSH से AVOID का उपयोग करें

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


आप पासवर्ड रहित लॉगिन को कॉन्फ़िगर करने के बारे में अधिक जानकारी यहाँ पा सकते हैं


3. कीरिंग एक्सटेंशन

यदि आप एक सुरक्षित विकल्प चाहते हैं, लेकिन SSH से परिचित नहीं हैं, तो यह प्रयास क्यों न करें?

डॉक्स से ...

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

यहाँ अधिक विस्तृत जानकारी है


3
सटोरू, क्रिस भाड़े के बारे में बात नहीं कर रहा है, लेकिन ssh: ssh के बारे में बात की जा सकती है ताकि आपको पासवर्ड का उपयोग करके खुद को पहचानने की जरूरत न पड़े (जैसा कि यहां बताया गया है: debian-administration.org/articles/152 )।
टॉमिस्लाव नैक-अल्फेयरविक

4
विधि 2 वास्तव में चीजों को सुरक्षित रूप से संभालने और रिमोट सिस्टम पर उपयोगकर्ता-स्तर की अनुमति बनाए रखने का एकमात्र तरीका है।
पीटर रोवेल

2
user570626 कीरिंग एकीकरण का उपयोग करने का उत्तर इन दोनों में से बहुत बेहतर है। @Peter रोवेल: ssh सेटअप एक वास्तविक दर्द है यदि आपके पास कुछ उपयोगकर्ता और रिपॉजिटरी हैं; आपको स्थानीय यूनिक्स उपयोगकर्ताओं की आवश्यकता होती है और कमांड को प्रतिबंधित करने के बारे में सोचना पड़ता है जिसे .sh / अधिकृत_कीप्स और शेल आवरण के साथ चलाया जा सकता है। बिल्कुल साफ समाधान नहीं।
डेमॉन

5
@ पैटर रोवेल: 1. इससे क्या फर्क पड़ता है? मैंने कहा कि उसका समाधान बेहतर नहीं था। 2. इसका होस्टिंग वातावरण से कोई लेना-देना नहीं है, यह विशुद्ध रूप से क्लाइंट साइड है (आपके एसएसएच समाधान के विपरीत जिसे समर्थन करने के लिए सर्वर साइड में बदलाव की आवश्यकता होती है)। 3. ट्रोलिंग और शेखी बघारते हुए, मैं अब भी कहता हूं कि यह एक साफ समाधान नहीं है। आपको एक स्थानीय उपयोगकर्ता की आवश्यकता होती है और आपको उन्हें शेल एक्सेस देना होगा तब इसे प्रतिबंधित करें। शेल का उपयोग हमेशा एक समझदार विकल्प नहीं होता है। मुझे आश्चर्य है कि आपके अनुभव में से कोई भी एक sysadmin में नहीं आया है जो आपकी सेवा शेल एक्सेस नहीं देना चाहता था।
ड्रेमन

2
@Draemon: मुझे लगता है कि हमारे पास अलग-अलग अनुभव हैं। व्यक्तिगत रूप से, मैं एक ऐसी प्रणाली पर काम नहीं करूंगा जहां मेरे पास शेल प्रॉम्प्ट न हो। यह मुझे दूसरी प्रणाली पर पूरी तरह से निर्भर करता है जो मुझे पहले से ही स्थापित है जो मुझे चाहिए। मेरा सामान्य अनुभव यह है कि अगर मुझे प्रॉम्प्ट नहीं मिल सकता है, तो मैं निश्चित रूप से अन्य सेवाओं को प्राप्त नहीं कर सकता हूं जिन्हें मैं अपने वर्कफ़्लो के लिए मौलिक मानता हूं। विभिन्न लोगों के लिए अलग (कुंजी) स्ट्रोक।
पीटर रोवेल

65

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

>> sudo apt-get install python-pip
>> sudo pip install keyring
>> sudo pip install mercurial_keyring

**Edit your .hgrc file to include the extension**
[extensions]
mercurial_keyring = 

https://www.mercurial-scm.org/wiki/KeyringExtension


1
यह मेरा पसंदीदा उपाय है। ... और सिर्फ दूसरी बात जो @hadrien ने कही, तीन कार्यों के बाद यह मैक ओएस एक्स पर एक आकर्षण की तरह काम करता है।
ngeek

मुझे सेकेंड करने के लिए मैं @ngeek भी दूसरा!
हेड्रिन

विंडोज पर कम से कम TortoiseHg कीरिंग एक्सटेंशन का समर्थन करता है: वैश्विक सेटिंग्स -> एक्सटेंशन -> mercurial_keyring
user272735

दुर्भाग्य से वर्तमान में कीरिंग एक्सटेंशन में विंडोज पर एक बग है जहां यह केवल एक बार में एक पासवर्ड बचा सकता है। इस प्रश्न को देखें ।
लॉरेंस होल्स्ट

यह सबसे अच्छा समाधान की तरह लगता है, लेकिन जब मैं चाबी का गुच्छा से पासवर्ड प्राप्त करने का प्रयास करते समय OSX, अजगर segfaults पर इसका उपयोग करने की कोशिश करता हूं।
इसहाक

30

एक साधारण हैक अपनी परियोजना की .hg/hgrcफ़ाइल में पुश यूआरएल में उपयोगकर्ता नाम और पासवर्ड जोड़ने के लिए है:

[paths]
default = http://username:password@mydomain.com/myproject

(ध्यान दें कि इस तरह आप पासवर्ड को सादे पाठ में संग्रहीत करते हैं)

यदि आप एक ही डोमेन के तहत कई परियोजनाओं पर काम कर रहे हैं, तो आप अपनी फ़ाइल में एक पुनर्लेखन नियम जोड़ना चाहते हैं ~/.hgrc, सभी परियोजनाओं के लिए इसे दोहराने से बचने के लिए:

[rewrite]
http.//mydomain.com = http://username:password@mydomain.com

फिर से, चूंकि पासवर्ड सादे पाठ में संग्रहीत है, मैं आमतौर पर सिर्फ अपना उपयोगकर्ता नाम संग्रहीत करता हूं।

यदि आप ग्नोम के तहत काम कर रहे हैं, तो मैं समझाता हूं कि मर्क्यूरियल और गनोम कीरिंग को कैसे एकीकृत किया जाए:

http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/


मैं एक्सटेंशन को डाउनलोड किया है, तथापि, जब मैं एक धक्का पासवर्ड मांगना मुझे पारित :( जा रहा इसे गलत तरीके से मैंने पहले GNOME कीरिंग इस्तेमाल नहीं किया है किया है मई मना कर दिया करने की कोशिश की सभी धन्यवाद एक
सटोरू

तुम क्या उपयोग करना चाहते हो सकता है - hg पुश के लिए debug और --verbose विकल्प यह देखने के लिए कि क्या गलत हो रहा है ...
Roberto Aloi

हाथ में मामले के लिए एकदम सही ... यदि आप ssh का उपयोग कर रहे हैं, तो आपको पासवर्ड में पास होने की आवश्यकता नहीं है ... यही वह कुंजी है जिसके लिए
beauXjames

यह मानते हुए कि आपके पास एक उपकरण है, जिसे आप सार्वजनिक रूप से बंद कर सकते हैं।
डेविड ने

23

किसी नौसिखिए उपयोगकर्ता को ऊपर बताई गई / स्पष्ट रूप से बताई गई बातें। वे शर्तों से भ्रमित हो जाते हैं

.hg / hgrc - इस फाइल का उपयोग रिपॉजिटरी के लिए, स्थानीय / कार्यक्षेत्र स्थान पर / वास्तविक रिपॉजिटरी के -hg फ़ोल्डर में किया जाता है।

~ / .hgrc - यह फ़ाइल नीचे की तुलना में अलग है। यह फ़ाइल ~ या होम डायरेक्टरी में रहती है।

myremote.xxxx = ..... bb.xxxx = ......

मर्क्यूरियल कीरिंग एक्सटेंशन का उपयोग करते हुए, यह [सामान्य] अनुभाग / निर्देश के तहत एक पंक्ति है। सुनिश्चित करें कि आपके द्वारा डाला गया सर्वर का नाम, "hg क्लोन" करते समय आपके द्वारा उपयोग किए गए से मेल खाता है अन्यथा कीरिंग कहेंगे, उपयोगकर्ता नहीं मिला। bb या myremote नीचे दी गई पंक्ति में, "उपनाम नाम" है जिसे आप "hg clone http: /..//// repo1 bb या myremote" करते समय देना चाहते हैं, अन्यथा यह काम नहीं करेगा या आपको यह सुनिश्चित करना होगा कि आपका स्थानीय रिपॉजिटरी की .hg / hgrc फाइल में एक ही उर्फ ​​होता है, अर्थात (आपने hg क्लोन करते समय जो दिया था .. जैसा कि अन्य पैरामीटर के रूप में)।

स्पष्ट विवरण के लिए नीचे दिए गए लिंक को पीएस करें, जल्दी से लिखे गए व्याकरण के लिए क्षमा करें।

पूर्व: यदि अंदर ~ / .hgrc (उपयोगकर्ता के घर निर्देशिका लिनक्स / यूनिक्स में) या mercurial.ini विंडोज में उपयोगकर्ता के घर निर्देशिका में, निम्न पंक्ति है और यदि आप करते हैं

`"hg clone http://.../.../reponame myremote"`

, तब आपको http रेपो लिंक के अनुसार एक से अधिक बार उपयोगकर्ता क्रेडेंशियल के लिए संकेत नहीं दिया जाएगा। [/ एक्सटेंशन के तहत ~ / .hgrc में "mercurial_keyring =" या "hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py" .. इन पंक्तियों में से एक होना चाहिए।

[auth]
myremote.schemes = http https
myremote.prefix = thsusncdnvm99/hg
myremote.username = c123456

मैं यह पता लगाने की कोशिश कर रहा हूं कि PREFIX प्रॉपर्टी कैसे सेट की जाए ताकि यूजर बिना यूजरनेम / पासवर्ड प्रॉम्प्ट के किसी भी Hg ऑपरेशन को क्लोन या परफॉर्म कर सके और उसे इस बात की चिंता किए बिना कि उसने http: // .... / ... के लिए क्या किया है। सर्वरनाम Hg रेपो लिंक का उपयोग करते समय। यह आईपी, सर्वरनाम या सर्वर का FQDN हो सकता है


4

MacPorts का उपयोग करके मैक OSX पर मर्क्यूरियल_कीरिंग संस्थापन:

sudo port install py-keyring
sudo port install py-mercurial_keyring

निम्नलिखित को ~ / .hgrc में जोड़ें:

# Add your username if you haven't already done so.
[ui]
username = email@address.com

[extensions]
mercurial_keyring =

इन आदेशों को चलाने और मेरे .hgrc फ़ाइल को अपडेट करने के बाद मुझे TortoiseHg में "mercurial_keyring नाम का कोई मॉड्यूल नहीं मिला"।
डंक

सुनिश्चित करें कि आपके पास सही पायथन संस्करण है, जैसा कि यहाँ वर्णित है: stackoverflow.com/questions/5173197/…
phm

2

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

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

वैश्विक सेटिंग्स को जोड़ने के लिए आप फ़ाइल C: \ users \ user.name \ mercurial.ini तक पहुँच सकते हैं और अनुभाग जोड़ सकते हैं

[auth]
bb.prefix=https://bitbucket.org/zambezia/packagemanager
bb.username = $username
bb.password = $password

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


0

हालांकि यह आपकी स्थिति में काम कर सकता है या नहीं भी कर सकता है, मैंने पुट्टी के पेजेंट का उपयोग करके इसे सार्वजनिक / निजी कुंजी बनाने के लिए उपयोगी पाया है।

यदि आप बिटकॉइन (.org) के साथ भी काम कर रहे हैं, तो इससे आपको अपने उपयोगकर्ता खाते में एक सार्वजनिक कुंजी प्रदान करने की क्षमता मिल सकती है और फिर रिपॉजिटरी तक पहुंचने वाले कमांड अपने आप सुरक्षित हो जाएंगे।

यदि पेजेंट आपके लिए रिबूट पर शुरू नहीं होता है, तो आप अपने विंडोज "स्टार्ट मेनू" में पेजेंट के लिए एक शॉर्टकट जोड़ सकते हैं और शॉर्टकट को आपके निजी (.ppk) फ़ाइल के स्थान के साथ 'गुण' पॉप्युलेट करने की आवश्यकता हो सकती है। ।

इसमें जगह के साथ Mercurial और आपके स्थानीय रिपॉजिटरी को SSH प्रारूप का उपयोग करके पुश / पुल करने के लिए सेट करना होगा।

विंडोज या मैक / लिनक्स के लिए एटलसियन साइट पर कुछ विस्तृत निर्देश दिए गए हैं ।

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

  1. स्टार्ट से पुट्टीजेन शुरू करें -> पुट्टी-> पुट्टीजेन
  2. एक नई कुंजी उत्पन्न करें और इसे बिना पासफ़्रेज़ के .ppk फ़ाइल के रूप में सहेजें
  3. जिस सर्वर से आप कनेक्ट करना चाहते हैं, उसमें लॉगिन करने के लिए पोटीन का उपयोग करें
  4. सार्वजनिक कुंजी पाठ को PuttyGen से ~ / .ssh / अधिकृत_keys के पाठ में जोड़ें
  5. स्टार्ट -> पुट्टी से स्टार्ट -> स्टार्टअप से अपनी .ppk फाइल का शॉर्टकट बनाएं
  6. स्टार्टअप मेनू से .ppk शॉर्टकट का चयन करें (यह हर स्टार्टअप पर अपने आप हो जाएगा)
  7. सिस्टम ट्रे में पेजेंट आइकन देखें? इसे राइट-क्लिक करें और "नया सत्र" चुनें
  8. "होस्ट नाम" फ़ील्ड में उपयोगकर्ता नाम @ होस्टनाम दर्ज करें
  9. अब आप स्वचालित रूप से लॉग इन करेंगे।

0

कीरिंग एक्सटेंशन का उपयोग करें। नीचे दर्ज करें mercurial.ini फ़ाइल में प्रवेश करें।

[एक्सटेंशन] mercurial_keyring =

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