मैं विंडोज के लिए Git को कैसे बताऊं कि मेरी निजी RSA कुंजी कहां मिल सकती है?


487

मेरे Git सेटअप लिनक्स पर ठीक चलाता है, लेकिन जब मैं विंडोज (Windows और के लिए Git का उपयोग कर के तहत चीजों को सेट करने का प्रयास TortoiseGit ), मैं नहीं जानता कि जहां मेरी निजी SSH कुंजी डाल करने के लिए (या, बेहतर अभी भी, कैसे बताने के लिए sshजहां यह है स्थित है)। मैं विंडोज के लिए Git की स्थापना के दौरान मानक ssh.exe विकल्प का उपयोग कर रहा हूं। यदि मैं सर्वर पर पासवर्ड प्रमाणीकरण (RSA के बदले) की अनुमति देता हूं तो सेटअप ठीक चलता है।


मेरे पास एक ही समस्या है, मैं "git बैश" प्रोग्राम का उपयोग करके "रूट" के रूप में एक सार्वजनिक कुंजी का उपयोग करके अपने देव बॉक्स में ssh कर सकता हूं जो "Git For Windows" के साथ स्थापित है, लेकिन मैं अपने "git" के रूप में लॉग इन नहीं कर सकता कुंजी भले ही मैंने अपने "रूट" से मेरे "अधिकृत_की" फाइल को अपने "git" उपयोगकर्ता के लिए कॉपी किया हो और मालिकों और अनुमतियों को सही ढंग से सेट किया हो। जब "रूट" ठीक उसी "अधिकृत_की" फ़ाइल के साथ काम करता है तो मैं "git" के रूप में लॉगिन क्यों नहीं कर सकता। इसके बजाय "git" के लिए यह सभी निजी कुंजी को पार करता है, जो कि ठीक वही हैं जो "रूट" के साथ काम करते हैं और पासवर्ड मांगते हैं। यह एक सेंटोस 5.5 सर्वर है।

@ फजी लॉलीपॉप: क्या आपके पास आपके git उपयोगकर्ता की अधिकृत_की फ़ाइल पर सही अनुमति है? यह chmod 600 होना चाहिए, और गिट उपयोगकर्ता के स्वामित्व में होना चाहिए। यदि यह रूट उपयोगकर्ता के स्वामित्व में है, तो यह काम नहीं करेगा
Dan McClain

हाँ सभी फाइलें और निर्देशिका सही मालिक और अनुमति हैं

जवाबों:


486

गिट बैश के लिए

यदि आप msysgit चला रहे हैं (मैं मान रहा हूं कि आप हैं) और Git Bash चलाने के लिए देख रहे हैं (मैं इसे TortoiseGit पर सुझाता हूं, लेकिन अब मैं GUI से अधिक CLI पर झुक जाता हूं), आपको यह पता लगाना होगा कि Git के लिए आपकी होम डायरेक्टरी क्या है इसे शुरू करने के बाद बैश करें pwd(विंडोज 7 पर, यह कुछ ऐसा होगा जैसा C:\Users\phsrमुझे लगता है)। जब आप गेट बैश में हों, तो आपको चाहिए mkdir .ssh

आपके पास घर निर्देशिका, और उसके .sshनीचे एक फ़ोल्डर है, तो आप PuTTYgen को खोलना चाहते हैं और आपके द्वारा पहले बनाई गई कुंजी (.ppk फ़ाइल) खोल सकते हैं। एक बार आपकी चाबी खुल जाने के बाद, आप उसे चुनना Conversions -> Export OpenSSH keyऔर सहेजना चाहते हैं HOME\.ssh\id_rsa। आपके पास उस स्थान पर कुंजी के बाद, गिट बैश कुंजी को पहचान लेगा और इसका उपयोग करेगा।

नोट: टिप्पणियाँ इंगित करती हैं कि यह सभी मामलों में काम नहीं करता है। आपको Program Files\Git\.ssh\id_rsa(या Program Files (x86)\Git\.ssh\id_rsa) OpenSSH कुंजी को कॉपी करने की आवश्यकता हो सकती है ।

कछुआ के लिए

TortoiseGit का उपयोग करते समय, आपको स्पीडी के निर्देशों के माध्यम से SSH कुंजी सेट करने की आवश्यकता होती है । आपको यह करने की आवश्यकता है कि हर भंडार के लिए आप TortoiseGit का उपयोग कर रहे हैं।


4
कछुआ के लिए स्पीडी के निर्देश तब तक काम नहीं करेंगे जब तक कि आपके पास रिपॉजिटरी न हो (क्योंकि 'रिमोट' कॉन्फ़िगरेशन सेटिंग तब तक प्रकट नहीं होती है जब तक कि आप रेपो पर कार्रवाई नहीं करते हैं), और आप शायद पहले स्थान पर रिपॉजिटरी प्राप्त नहीं कर सकते हैं यदि आप कर सकते हैं ' t मूल से क्लोन करने के लिए खुद को प्रमाणित करें। मुश्किल!
19ot पर Kylotan

43
GitBash के साथ मैंने पाया कि मुझे अपनी ~/.ssh/id_rsaफाइल को कॉपी करना Program Files\Git\.ssh\id_rsaथा - जो थोड़ा भ्रमित करने वाला था, लेकिन अब IntelliJ और Windows cmd git रिपॉजिटरी को पुश कर सकते हैं जो कि मुख्य प्रमाणीकरण का उपयोग करते हैं।
जेपी।

7
इसी तरह। मैंने सिर्फ git-for-windows स्थापित किया है, मैं इसे cmd.exe से चला रहा हूं। मैं फ़ाइलों को डाल करने के लिए आवश्यक id_rsaहै और id_rsa.pubमें c:\program files (x86)\Git\.ssh.sshDir पहले से ही मौजूद थे। धन्यवाद, जेपी।
चेसो

5
दूसरा पैराग्राफ सुनहरा था। :)
Bjørn

4
@ डामन: यह id_rsaबिना एक्सटेंशन के होना चाहिए । यह फ़ाइल का नाम है, यह एक निर्देशिका नहीं है
Dan McClain

107

Windows के लिए Git के साथ शिप किए गए अंतर्निहित SSH क्लाइंट का उपयोग करते हुए, आपको गृह परिवेश चर सेट करने की आवश्यकता है ताकि Git SSH क्लाइंट कुंजी पा सके।

उदाहरण के लिए, Windows Vista स्थापना पर, यह setx HOME c:\Users\admin\कमांड लाइन पर जारी करके किया जाएगा ।

इसने मेरा दिन बना दिया और जीआईटी के साथ इस मुद्दे को तय किया कि आपकी निजी कुंजी पासवर्ड से सुरक्षित नहीं है। यदि आप ssh-agent का उपयोग करना चाहते हैं, तो आप शायद ssh-Agent cmd.exe चला सकते हैं (हालाँकि मैंने ऐसा कभी नहीं किया है) और ssh-add को हमेशा की तरह।

ध्यान दें कि सभी Git / SSH टूल को एक विंडो को ब्लिंक न करने के लिए cmd.exe से चलाया जाना चाहिए ।

यदि यह सही ढंग से काम नहीं करता है, तो पलक का उपयोग करके संभवतः GIT_SSH को ट्विक करके प्राप्त किया जा सकता है । सभी SVN + ssh ट्यूटोरियल्स को देखें; यह मूल रूप से एक ही पाइपलाइन है जिसे आपको सेटअप करने की आवश्यकता है।


16
यह वही है जिसकी मुझे तलाश थी क्योंकि मैं विंडोज कमांड प्रॉम्प्ट का उपयोग करने की कोशिश कर रहा हूं, न कि गिट बैश।
जॉन रुइज

अच्छा, आसान तय है, लेकिन इसके बिना यह पता लगाना मुश्किल होगा!
thaddeusmt

महत्वपूर्ण बात यह है कि HOME = और c: \ ... के बीच कोई रिक्त स्थान नहीं है। Oct के समाधान ने मेरे लिए चाल चली। :-)
लुत्ज़

2
इसके setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use बजाय cmd`।
ट्रेडर

2
+1GIT_SSH=c:\pathto\plink.exe
निक ग्रीली

54

आप TortoiseGit के लिए प्रमुख स्थान निम्नलिखित तरीके से निर्दिष्ट कर सकते हैं:

  • एक एक्सप्लोरर विंडो खोलें।
  • कॉनटेक्स्टमेनू खोलें और कछुआसेटिंग्स को नेविगेट करें
  • अब खुली हुई विंडो में, Gitरिमोट पर नेविगेट करें
  • इसी इनपुट बॉक्स में अपनी PuTTY कुंजी के लिए पथ सेट करें।

एक स्क्रीनशॉट नीचे है:

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


8
इसके अतिरिक्त यदि आपको अपनी निजी कुंजी को अन्य प्रारूप से '.ppk' प्रारूप में बदलने की आवश्यकता है, तो आप इस
तारिक एम नसीम

इसने मेरे लिए काम किया।
मैक्सिम एलिसेव

6
Git> रिमोट केवल एक बार दिखाई देता है जब आप रिपॉजिटरी को सफलतापूर्वक क्लोन कर लेते हैं।
स्टीव पिचर्स

5
एक बहुत ही आसान समाधान यह है कि git (openSSH का उपयोग करके) में सब कुछ ठीक से सेट किया जाए, और फिर Gort द्वारा उपयोग किए गए ssh.exe का उपयोग करने के लिए TortoiseGit को बताएं। देखें stackoverflow.com/a/33328628/318317 इस तरह, आपको केवल एक बार इसे ठीक करने की आवश्यकता है।
डैनियल रोज 16

50

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

  • गेट बैश प्रॉम्प्ट खोलें
  • टाइप करें 'ssh-keygen'
    • डिफ़ॉल्ट स्थान स्वीकार करें
    • एक रिक्त पासफ़्रेज़ चुनें (इसलिए सभी प्रश्नों के लिए 'प्रवेश करें' दबाएँ)
  • अब सार्वजनिक सर्वर को अपने सर्वर पर कॉपी करें, उदाहरण के लिए: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

यह आपके अपने कंप्यूटर पर किया गया है। अब sshगंतव्य सर्वर में, फिर करें

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

बस! हो गया! Git Bash से, परीक्षण करने के लिए निम्न कार्य करें:

ssh someuser@someserver.com ls

यदि यह Git सर्वर पर आपके होम डायरेक्टरी की फाइलों को सूचीबद्ध करता है, और फिर आपका काम हो गया!

GitHub के लिए, आपके पास उनके सर्वर तक पहुंच नहीं है, लेकिन आप उनकी वेबसाइट का उपयोग करके कुंजी अपलोड कर सकते हैं, इसलिए बिट के लिए 'अब अपने सर्वर पर कॉपी करें', करें:

  • Git Bash में, 'cat ~ / .shsh / id_rsa.pub' टाइप करें, परिणाम चुनें, और इसे क्लिपबोर्ड पर कॉपी करें।
  • GitHub वेबसाइट पर, 'खाता सेटिंग', 'SSH और GPG कुंजी' पर जाएं, 'New SSH कुंजी' पर क्लिक करें और कुंजी पेस्ट करें।

8
बिना पासफ़्रेज़ के कुंजियाँ न बनाएँ। यह आपके पासवर्ड को एक टेक्स्ट फ़ाइल में डालने जैसा है, सिवाय इसके कि हर कोई निजी कुंजी के लिए डिफ़ॉल्ट स्थान जानता है।
ग्रेग

14
आप गलत प्रश्न का उत्तर दे रहे हैं। प्रश्न यह है कि मौजूदा निजी कुंजी को कैसे इंगित किया जाए।
ओरंगुतेच

7
@GregB, मैं इसे इस तरह से देखता हूं: कोई भी सर्वर जिसके लिए मैं पासवर्ड-लेस कुंजी बनाता हूं वह मेरे लैपटॉप जितना सुरक्षित है, यह मेरे लैपटॉप की सुरक्षा परिधि का विस्तार है। वास्तव में, तब भी नहीं, जब से मेरे घर की निर्देशिका एन्क्रिप्ट की गई है ;-) तो, यह मेरे लैपटॉप पर एन्क्रिप्टेड होम विभाजन के रूप में सुरक्षित है, जो मेरी राय में, जीथब तक पहुंच प्राप्त करने के लिए 'काफी अच्छा' है। (जो आपकी राय से भिन्न हो सकता है!)
ह्यूग पर्किन्स

3
@GregB व्यामोह में नीचे मत गिरो! :] यकीन है, कि पासवर्ड-सुरक्षित कुंजी का उपयोग करना पासवर्ड-कम का उपयोग करने की तुलना में बहुत अधिक सुरक्षित है, लेकिन यह दावा करना कि पासवर्ड-लेस कुंजी को तोड़ना उतना ही आसान है जितना कि टेक्स्ट फ़ाइल में पासवर्ड को संग्रहीत करना एक स्पष्ट गलत है। मैंने कई गाइड देखे हैं, जो उपयोगकर्ताओं को पासवर्ड से सुरक्षित कुंजी का उपयोग करने के लिए प्रोत्साहित करते हैं, लेकिन मैंने कभी कोई दावा नहीं देखा है, कि पासवर्ड के बिना उनका उपयोग करना बिल्कुल भी सुरक्षित नहीं है। प्लस: कुछ सिस्टम उपयोगकर्ताओं द्वारा दर्ज किए गए कुंजी के पासवर्ड को याद रखने के लिए समाधान का समर्थन नहीं करते हैं, और इसके लिए पूछते हैं, प्रत्येक बार कुंजी का उपयोग किया जाता है। जो इस स्थिति में SSH कुंजियों का उपयोग बेकार कर देता है।
ट्रेडर

4
बातचीत के लिए, जो मूल प्रश्न से भटक गया है, SSH कुंजी निश्चित रूप से पासवर्ड की तुलना में अधिक क्रिप्टोग्राफिक रूप से सुरक्षित है, लेकिन उस सुरक्षा को आपके SSH कुंजियों को एन्क्रिप्ट न करके जोखिम में डाल दिया जाता है। मेरा व्यक्तिगत दृष्टिकोण एसएसएच एजेंट का उपयोग करते हुए दिन की शुरुआत में मेरी चाबियाँ अनलॉक करना है, जो तब डिक्रिप्टेड कुंजी को स्मृति में रखता है ताकि मुझे पूरे दिन पासवर्ड को फिर से दर्ज करने की आवश्यकता न हो। जैसा कि @ ह्यूग पर्किन्स टिप्पणी करते हैं, और मैं विरोधाभास कर रहा हूं, आप सभी अपनी सुरक्षा आवश्यकताओं को I / We से बेहतर जानते हैं :)।
ग्रेग

38

यदि आप OpenSSH टूल के साथ msysgit का उपयोग कर रहे हैं, तो आपको या तो ~/.ssh/id_rsaGit कॉन्फ़िगरेशन बनाना या बनाना होगा , ~/.ssh/configजिसमें आपकी कुंजी को इंगित किया जाएगा।

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

~ /। ssh / config :

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Git Bash में एक बार, आप अपने वर्तमान सत्र के ssh- एजेंट में अपनी कुंजी जोड़ने के लिए दो कमांड चला सकते हैं ताकि बार-बार कुंजी का पासवर्ड टाइप करने से बच सकें।

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

1
मैंने यह किया, लेकिन github.com के लिए: Host github.com IdentityFile ~ / .ssh / github_rsa
सारा वेसल्स

1
यदि आपके पास आपके रास्ते में एक जगह है, तो आपको उद्धरणों का उपयोग करना होगा: IdentityFile "/ C / My Keys / key"
r03

मैं इस तरह से पसंद करता हूं, क्योंकि इससे मुझे अन्य पीसी से तेजी से कनेक्ट होने वाली चाबियाँ मौजूद हैं
किरिल गुसैटिन

मेरे .itconfig में खंड हैं। मुझे इन मेजबानों को किन वर्गों में रखना चाहिए?
स्टीव याकोवेन्को

16

मैंने अभी% HOME% =% HOMEPATH% निर्धारित किया है

इस प्रणाली में लॉग इन सभी उपयोगकर्ताओं के लिए काम करने का लाभ है (वे प्रत्येक अलग .ssh फ़ोल्डर प्राप्त करते हैं)।

विस्टा में:

  1. कंप्यूटर पर राइट-क्लिक करें
  2. गुण चुनें
  3. उन्नत सिस्टम सेटिंग्स पर क्लिक करें
  4. पर्यावरण चर पर क्लिक करें
  5. निचले भाग में (सिस्टम चर) नए पर क्लिक करें
  6. चर नाम प्रकार के लिए: गृह
  7. चर पथ प्रकार के लिए:% HOMEPATH%
  8. ओके पर क्लिक करें

6
मेरे मामले में मैंने गृह =% USERPROFILE%
igor

1
ध्यान दें कि %HOMEPATH%इसमें ड्राइव अक्षर शामिल नहीं है, इसलिए यदि आपका स्रोत आपके पास नहीं है, तो C:आपको इसे प्रस्तुत करने की आवश्यकता C:है %HOME%
ग्रीम पेरो

set %HOME%=%HOMEPATH%मेरे लिए काम किया! धन्यवाद!!
टेंग

7

आपकी निजी कुंजी को आपके वर्कस्टेशन पर SSH एजेंट में जोड़ने की आवश्यकता है। आप इसे कैसे प्राप्त कर सकते हैं यह इस बात पर निर्भर हो सकता है कि आप किस git क्लाइंट का उपयोग कर रहे हैं, हालाँकि puTTY और इसके संबंधित एजेंट (पेजेंट) आपके लिए चाल चल सकते हैं, यहाँ आधिकारिक बायनेरिज़ और स्रोत का लिंक है:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


मैंने ऊपर कहा है कि मैं विंडोज के लिए Git का उपयोग कर रहा हूं और पोटीन के एवज में ssh.exe (पैकेज्ड w / git) का उपयोग कर रहा हूं। एक निजी कुंजी जोड़ने के लिए कुछ मानक अभ्यास होना चाहिए, मैं अभी पता नहीं लगा सकता कि कैसे। स्विचिंग सॉफ़्टवेयर वास्तव में मुझे लॉग इन करने की अनुमति दे सकता है, मानक गीट सेटअप के साथ ऐसा करने का एक तरीका है, नहीं?
बाइनरीऑर्गेनिक ऑक्ट

क्षमा करें, मैं न केवल खिड़कियों पर काम करता हूं, केवल लिनक्स। लेकिन कुंजी आपके SSH एजेंट में होना चाहिए। वहाँ एक Agent.exe या उन लाइनों के साथ कुछ है?
डेक्कन शनाघी

1
हाँ, लिनक्स की तरफ सेटअप केक था। लेकिन मुझे लगता है कि यह दुर्भाग्य से विंडोज पर भी काम कर रहा है। विंडोज बॉक्स (gsh, ssh-add, ssh-agent, ssh-keygen और ssh-keyscan) पर git / bin फ़ोल्डर में कई ssh-related निष्पादन योग्य फाइलें हैं, लेकिन मैं उनमें से कोई भी बनाना नहीं जानता। कुछ भी करो। वे सिर्फ एक cmd विंडो को खुली और तुरंत बंद कर देते हैं। मैं उलझन में हूं।
बाइनरीऑर्गेनिक ऑक्ट

8
पेजेंट वास्तव में मेरे लिए समस्या का समाधान करता है - मेरे पास मेरे स्टार्ट मेनू के स्टार्टअप फ़ोल्डर ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) की ओर इशारा करते हुए एक शॉर्टकट है "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", ताकि यह स्टार्टअप पर मेरी एसएसएच कुंजी को लोड करे और इससे जीआईटी "बस काम": ओ)
ओवेन ब्लैकमैन

@OwenBlacker OMFG! आपको निश्चित रूप से इस टिप्पणी को पूर्ण आकार के उत्तर के रूप में लिखना चाहिए ! यह यहाँ एकमात्र समाधान है , जिसने वास्तव में मेरी मदद की और मेरी समस्या को हल किया! दया, कि मैं आपको केवल +1 दे सकता हूं! :]
trejder

6

मेरे मामले में मैं डॉक कंटेनर में विंडोज के लिए गिट का उपयोग कर रहा था windowsservercore

मेरे Git द्वारा स्थापित किया गया था Chocolatey लिए C:\Program Files\Git

मुझे इसके C:\Program Files\Git\etc\ssh\ssh_configसाथ फाइल अपडेट करनी थी :

Host example.com
   Identityfile ~/.ssh/id_rsa

तब मैं कुंजी का उपयोग कर सकता था C:\Users\<user>\.ssh\id_rsa

यदि आप विंडोज के लिए ओपनएसएसएच के साथ मिलकर विंडोज के लिए गिट का उपयोग कर रहे हैं। Git अभी भी अपने स्वयं के उपयोग कर रहा है ssh

साथ ही यदि आप का उपयोग कर की योजना ssh-keyscan host.com > known_hostsOpenSSH से, सावधान रहना क्योंकि से पाइपिंग उत्पादन stdoutकी keyscan(Windows पर) यूसीएस -2 के लिए एन्कोडिंग बदलता है, लेकिन OpenSSH केवल UTF-8 पढ़ सकते हैं! इसलिए known_hostsफ़ाइल एन्कोडिंग को बदलना सुनिश्चित करें ।


इसने मदद की, लेकिन जो कोई id_dsa कुंजी का उपयोग कर रहा है, उसके लिए आपको अपने होस्ट के अंतर्गत "PubkeyAcceptedKeyTypes ssh-dss" भी जोड़ना होगा।
माइकल रुसो

4

ठीक है, मैंने के सुझाव को देखा .

लेकिन मेरी निजी SSH कुंजियों को सार्वजनिक फ़ोल्डर में रखने से मुझे नहीं लगता था कि यह एक अच्छा विचार है, इसलिए मैंने यह देखना शुरू कर दिया कि ज्ञातहोस्ट कहां था।

इसलिए यदि आप अपनी SSH कुंजी को सही ढंग से सुरक्षित रखना चाहते हैं, तो आपको अपनी कुंजी निम्नलिखित निर्देशिका में रखनी होगी:

विंडोज 7, 8 और 8.1 32-बिट के लिए:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program फ़ाइलें \ Git \

विंडोज 7, 8 और 8.1 64-बिट के लिए:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \


यह मेरे Win7 मशीन पर सबसे सरल समाधान था। तुम्हारी तरह मैंने भी खोजा known_hosts। यकीन है कि यह पर्याप्त था C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh। उस निर्देशिका में मेरी कुंजी फ़ाइल (id_rsa) रखकर, ssh बिना किसी शिकायत के इसे खोजने में सक्षम था। मैंने थोड़ा सा पढ़ा - यह है कि विंडोज हैंडल (विरासत) सॉफ्टवेयर निषिद्ध क्षेत्रों (जैसे "C: \ Program Files \") को लिखने का प्रयास कर रहा है, इसलिए Git का ssh पूरी तरह से अनभिज्ञ है कि यह VirtualStar निर्देशिका, Windows को लिख रहा है पारदर्शी रूप से संभाल रहा है। कम से कम ये फाइलें एक उपयोगकर्ता की हैं!
डेवगॉयर

4

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

  1. डाउनलोड pageant.exe, puttygen.exe, putty.exeऔर plink.exeपुट्टी की वेबसाइट से। उन्हें C:\puttyToolsनिर्देशिका में रखें ।
  2. भागो puttygen.exe
  3. बटन पर क्लिक करें Generate
  4. जब तक प्रोग्राम आपको करने के लिए नहीं कहता, तब तक माउस को विंडो के ऊपरी भाग में चारों ओर घुमाएँ।
  5. एक पासफ़्रेज़ प्रदान करें, और बाद के टेक्स्टबॉक्स में इसे दोहराएं।
  6. "निजी कुंजी सहेजें" पर क्लिक करें। इनको सहेजने की सामान्य निर्देशिका %USERPROFILE%\_ssh(मेरे कंप्यूटर में यह मानचित्र C:\Users\andres\.ssh\) है। इससे कोई फर्क नहीं पड़ता कि आप कुंजी को क्या कहते हैं, लेकिन प्रदर्शन उद्देश्यों के लिए, मैं इसे कॉल करने जा रहा हूं github.ppk। इस फ़ाइल में .ppk का एक्सटेंशन होना चाहिए।
  7. PuTTYgen में शीर्ष पाठ बॉक्स में पाठ को कॉपी करें, एक लेबल किया गया है Public key for pasting into OpenSSH authorized_keys fileऔर इसे GitHub की सेटिंग में एक नए SSH कुंजी में पेस्ट करें। इसे एक शीर्षक दें जो बताता है कि कुंजी किस मशीन पर है (उदाहरण के लिए "कार्य लैपटॉप")।
  8. भागो pageant.exe, एक नया सिस्ट्रे आइकन दिखाई देगा।
  9. आइकन पर राइट क्लिक करें -> कुंजी जोड़ें।
  10. अपनी ppk फ़ाइल का पता लगाएँ, अपना पासफ़्रेज़ दर्ज करें।
  11. इन नए उपयोगकर्ता वातावरण चर ( EnvironWindowsMenu के माध्यम से आवेदन की तलाश में जो मिल जाएगा Edit environment variables for your account) बनाएँ : GIT_SSH = "C:\puttyTools\plink.exe"औरSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Putty.exe खोलें और उस होस्ट से कनेक्ट करने का प्रयास करें जहाँ आप अपने Git रिपॉजिटरी को होस्ट करते हैं। उदाहरण के लिए, SSH के माध्यम से github.com से कनेक्ट करने का प्रयास करें, और एक संवाद आपसे पूछेगा कि क्या आप सर्वर के फिंगरप्रिंट को स्वीकार करते हैं: YES पर क्लिक करें।
  13. अपने MINGW64Git कंसोल का एक नया इंस्टेंस चलाएं , और पुष्टि करें कि कमांड लिखने से पर्यावरण चर वहां मौजूद हैं env | grep -i ssh
  14. आपको सब सेट होना चाहिए। अपने मेजबान से Git + SSH प्रोटोकॉल के साथ क्लोन करने का प्रयास करें।

(मूल रूप से इन दो गाइड से निकाले गए, जिन्हें मैंने एक में जोड़ा था: विंडोज के लिए Git को सेटअप करने के लिए कैसे करें और PuTTY पलक / पेजेंट का उपयोग करने के लिए MinGW-W64 + MSYS को कॉन्फ़िगर करें ।)


3

Windows के लिए GitHub और Windows के लिए Git GUI को मिक्स करते समय, आप उन मुद्दों पर चल सकते हैं जहां Git GUI आपको उपयोगकर्ता नाम और पासवर्ड के लिए संकेत देता है। इसके लिए इलाज दूरस्थ URL को https:(जो Windows के लिए GitHub बनाता है) को Git प्रोटोकॉल में बदलना है। में .gitविन्यास फाइल में निर्देशिका, लगता है:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

इसे इसमें बदलें:

[remote "origin"]
    url = git@github.com:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*

हाँ यह बहुत कष्टप्रद है। विंडोज़ जीयूआई के लिए जीथब के साथ एक रेपो क्लोन करना स्वाभाविक और आसान है, लेकिन जब गिट खोल के बाहर गिट क्यूई का उपयोग विफल हो गया। मुझे आश्चर्य है कि git शेल में git कमांड https url के साथ कैसे काम करता है ...
hiroshi

SSH के लिए हमेशा उपसर्ग है git@{SERVER URL}?
nmz787

हाँ, जहाँ तक मैंने कभी देखा है :)
IDisposable

पहले से ही यह था - अभी भी मुझसे हर समय पूछता है
इयान ग्रिंजर

3

फ़ाइलों के लिए मानक स्थान में है %USERPROFILE%\.ssh

%USERPROFILE%यूनिक्स में $ होम के बराबर है (सामान्य रूप से कुछ ऐसा करने के लिए नक्शे c:\users\youruserid)।

यदि आप Git के साथ आए SSH टूल का उपयोग कर रहे हैं, जो कि मानक कमांड लाइन Unix- शैली के उपकरण हैं, तो आप सभी गोले में ssh-agent के साथ काम करने के लिए मेरी स्क्रिप्ट की तरह कुछ का उपयोग कर सकते हैं ।


भविष्य पाठकों के लिए, %USERPROFILE% is the equivalent of $HOMEहै के बराबर $HOME। बहुत सारे खराब एक्टिंग वाले लिनक्स एप्स ने विंडोज को ट्रीट किया और दोनों को एक ही ई माना, लेकिन उन्हें एक जैसा नहीं माना जाना चाहिए ।
मीका ज़ोल्टू

मीका, क्या आप इसके लिए अंतर के बारे में सूचित कर सकते हैं? इसके अलावा, यहां तक ​​कि अलग इरादे से, यह प्रतीत होता है कि यदि सभी उपकरण एक दूसरे के रूप में उपयोग करते हैं, तो क्या यह प्रभावी रूप से समतुल्य नहीं है?
एरिक ब्लेड

%USERPROFILE%विंडोज़ पर उसी तरह उपयोग करने वाले उपकरण जैसे कि $HOMEलिनक्स पर विंडोज विकास के लिए अच्छी तरह से प्रलेखित सर्वोत्तम प्रथाओं / सिफारिशों का उल्लंघन कर रहे हैं (एमएस द्वारा बहुत पहले प्रकाशित किया गया था और समय के साथ अद्यतन किया गया था)। ऐसे कई उपकरण हैं जो ऐसा करते हैं, लेकिन उनका अनुसरण करने का तर्क बहुत कुछ तर्क की तरह है "पूल में एक्स पिस, इसलिए हम भी हैं।" USERPROFILEवह जगह है जहाँ उपयोगकर्ता उन दस्तावेज़ों को संग्रहीत करता है जो वे बनाते हैं / सहेजते हैं (जैसे, संवाद सहेजें) APPDATAप्रति उपयोगकर्ता कॉन्फ़िगरेशन डेटा के लिए है। LOCALAPPDATAप्रति उपयोगकर्ता कैश और बड़ी फ़ाइलों के लिए है। PROGRAMDATAमशीन-वाइड कॉन्फ़िगरेशन और कैश के लिए है।
मीका झोल्टू

सामान्य तौर पर, USERPROFILE के साथ दुर्व्यवहार करने वाले एकमात्र उपकरण लिनक्स डेवलपर्स द्वारा लिखे गए उपकरण हैं और फिर विंडोज पर पोर्ट किए जाते हैं। एक डेवलपर के रूप में, आप शायद इनमें से बहुत का उपयोग करते हैं इसलिए ऐसा लगता है कि "हर कोई इसे कर रहा है" लेकिन विकास टूलिंग पारिस्थितिकी तंत्र के बाहर अधिकांश विंडोज एप्लिकेशन वास्तव में अच्छे नागरिक हैं। यहां तक ​​कि माइक्रोसॉफ्ट कभी-कभी चीजों को सही जगह पर नहीं रखने की गलती करता है (वे एक बड़ी कंपनी हैं), हालांकि सामान्य तौर पर जब आप इसे इंगित करते हैं तो वे समस्या को हल करने और ओएस दिशानिर्देशों का पालन करने का प्रयास करते हैं।
मीका ज़ोल्टू

1
(क्षमा करें, टिप्पणियों पर StackExchange चरित्र सीमाएँ)। यहां फ़ोल्डर्स के बारे में अधिक विवरण और प्रत्येक में क्या जाता है का एक संक्षिप्त विवरण है। अन्य संसाधनों के साथ-साथ अधिक उपभोज्य ब्लॉग पोस्ट भी शामिल हैं, लेकिन यह सबसे अधिक तकनीकी सटीकता प्रदान करता है: Technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
मीका जोल्ता

2

मेरे पास इसी तरह के मुद्दे थे और यहां कोई भी जवाब समस्या का हल नहीं था। यह पता चला है, मेरी कुंजी जोड़ी मूल रूप से एक खाली पासफ़्रेज़ के साथ उत्पन्न हुई थी। (मुझे पता है, गूंगा।)

एक बार जब मैंने एक नया कीपर बनाया और सार्वजनिक कुंजी को GitHub पर अपलोड किया, तो चीजें फिर से काम करने लगीं।


1
इस। ughhhhhhhhhhhhh। अलविदा 2 घंटे
स्कूप

1

Windows सेवा खाते से ssh चलाते समय निम्न उत्तर इस प्रश्न पर भी लागू होता है: SSH पर Git के साथ जेनकिंस (Windows सेवा)


आपके द्वारा दिए गए लिंक के बाद मैं अपना जेनकिंस सेटअप प्राप्त करने में सक्षम था। मुझे Git प्रोग्राम पथ पर गृह परिवेश चर सेट करने की आवश्यकता है, जो कि .ssh डायरेक्टरी का आयोजन करता है, जिसमें मैंने अपनी SSH कुंजी बनाई है।
Spechal

1

आप कुंजी और कुंजी फ़ाइल का नाम दोनों को निर्दिष्ट कर सकते हैं जैसे (उबंटू पर)। उदाहरण के लिए:

ssh -i /home/joe/.ssh/eui_rsa

यह पूरी तरह से समस्या को हल करता है और आपको अपनी कुंजियाँ संग्रहीत करने की अनुमति देता है जहाँ आप कभी भी चाहेंगे।
डेवगॉयर

सवाल विशेष रूप से खिड़कियों के बारे में था। मुझे इस तरह काम करने वाली अपनी उबंटू मशीन पर पकड़ है, लेकिन मैं यह नहीं बता सकता कि GIT_SSH_COMMANDमेरे विंडोज मशीन पर क्या सेट किया जाए।
mjaggard

1

पेजेंट (एक एसएसएच एजेंट जो पुट्टी बंडल के साथ आपूर्ति की जाती है ) मेरे लिए समस्या हल करता है।

मेरे पास मेरे स्टार्ट मेनू के स्टार्टअप फ़ोल्डर ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) की ओर इशारा करते हुए एक शार्टकट है "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", जिससे यह स्टार्टअप पर मेरी SSH कुंजियों को लोड करता है और इससे Git "जस्ट वर्क": ओ) बनता है।


4
मुझे लगता है कि आपको काम करने के लिए कई अन्य सेटिंग्स सही हैं (जैसे कि GIT_SSH सेट करने के लिए TortoisePL.exe। मुझे लगता है?), और हालांकि यह मेरे लिए अतीत में काम कर चुका है, मुझे अक्सर अन्य मशीनों पर इसके साथ समस्या आती है। :-(
साइमन ईस्ट

मुझे पेजेंट से 'फ़ाइल खोलने में असमर्थ' :( जो मुझे पता है कि मैं सही ढंग से सेट कर रहा हूँ जैसे कि मैं इसे TortoiseGit के लिए उपयोग कर रहा हूँ:
इयान ग्रेन्जर

1

कई जवाब यह कहते हैं, लेकिन मेरे लिए पर्याप्त उपवास नहीं!

विंडोज़ में msys का उपयोग कर (मानक विंडोज़ कंसोल) C:\Users\{you}\.ssh\id_rsa

मूल रूप से यह स्थापित कुंजी (कम से कम मेरे नए लैपटॉप पर) को स्कैन करने में परेशान नहीं करता है और इसलिए विशेष रूप से इसकी आवश्यकता है id_rsa

मैं इस का सामना करना पड़ा विंडोज़ 10 64-बिट के लिए रूबी MSYS CLI में कुछ निजी काम रेपो का क्लोन बनाना चाहता था


0

यदि आप विंडोज 7/8 पर हैं, तो आपको C: \ Users \ Your_User_Name.ssh में दिखना चाहिए और अपनी id_rsa फ़ाइल को यहां कॉपी और पेस्ट करना होगा और यह सभी आउट-ऑफ-द-बॉक्स काम करेगा।


0

Windows पर SSH का उपयोग करते समय मैंने जो एक गलती की थी, वह यह थी कि जब मैंने Git Bash क्लाइंट के माध्यम से कुंजियों का उपयोग करने का प्रयास किया था, तो ~ / .sh के भीतर की सभी फाइलें गलत अनुमतियाँ थीं, फिर भी उसने मुझे यह बताने का प्रयास नहीं किया कि यह एक थी। मुसीबत।

एक परीक्षण के रूप में, सुनिश्चित करें कि आपने अपनी ~ / .shsh निर्देशिका में सब कुछ chmod 600 में सेट किया है।


0

यदि आपके पास विंडोज मशीन पर आवश्यक अनुमति है, और आपकी नीतियां इसे अनुमति देती हैं, तो मैं Cygwin ( https://cygwin.com/ ) स्थापित करने का सुझाव दूंगा , विशेष रूप से यह देखते हुए कि आपके पास लिनक्स के साथ पूर्व अनुभव है। Cygwin आपके ssh-keys को संभालना संभव बना देगा जैसा कि आप किसी अन्य Linux / Unix मशीन पर करेंगे। और यह लिनक्स के लगभग सभी टूल्स तक पहुंच प्रदान करता है।


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

0

TortoiseGit आपको एक रिपॉजिटरी को क्लोन करते समय उपयोग करने के लिए कुंजी निर्दिष्ट करने देता है। बस "लोड पोट्टी कुंजी" की जाँच करें और .ppkफ़ाइल में ब्राउज़ करें , स्क्रीनशॉट के रूप में:https://i.stack.imgur.com/lAyzT.png


अक्षम होने पर, जांच Settings... -> Network -> SSH clientके लिए निर्धारित हैC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
निकिता Bosik

0

मैंने उपरोक्त मुद्दा बनाकर तय किया है

~ / .Ssh / config

फ़ाइल और डाल:

IdentityFile C:\Users\adria\.ssh\mysshkey

0

Declan के उत्तर के लिए अपनी टिप्पणी पढ़कर, पहले कमांड प्रॉम्प्ट खोलने का प्रयास करें (प्रारंभ → रनcmd ) और फिर उस git / bin फ़ोल्डर में जाएँ और चलाएँ ssh-keygen। सैद्धांतिक रूप से जो RSA कुंजी उत्पन्न करेगा और उसे उपयुक्त निर्देशिका में रखेगा। फिर आपको बस इसे ढूंढना है और दुनिया के साथ अपनी सार्वजनिक कुंजी साझा करना है।

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


0

Windows पर Git Gui के v0.17 का उपयोग करके मैंने निम्नलिखित मेनू कमांड पर क्लिक किया: सहायताSSH कुंजी दिखाएं

आपका OpenSSH सार्वजनिक कुंजी हकदार एक संवाद दिखाई दिया । मैंने एक कुंजी बनाई और उसे क्लिपबोर्ड पर कॉपी किया। फिर मैंने स्टेप थ्री के बाद से githelp पर सेटअप- ssh निर्देशों का पालन करना जारी रखा । बाद में Git Gui ने चुपचाप GitHub के साथ संचार किया - किसी भी क्रेडेंशियल में प्रवेश करने की आवश्यकता नहीं है।


0

मेरे विंडोज 7 सिस्टम पर Git Gui userprofile/.sshफ़ोल्डर में RSA कुंजी या अधिक विशेष रूप से दिखता है c:/users/yourusername/.ssh/

मेरे सेटअप के लिए मुश्किल हिस्सा होस्टमैन को साझा कुंजी प्राप्त करने के लिए साझा होस्ट मिल रहा था। जिस तरह से मैं इसे काम करने के लिए प्राप्त कर सकता था वह महत्वपूर्ण जोड़े (पासवर्ड के बिना) बनाने के लिए गिट गुई का उपयोग करके था और फिर नियंत्रण कक्ष, ssh, कुंजियों के प्रबंधन के माध्यम से सार्वजनिक कुंजी को कॉपी और पेस्ट करना था।

शुरुआत में शुरू करने के लिए, आपको Git Gui में मेनू हेल्प , शो SSH कुंजी , फिर Generate Key पर जाकर कुंजियाँ बनानी होंगी । अब आपके पास .sshडायरेक्टरी में दो नई चाबियां होंगी । .pubफ़ाइल खोलें और सामग्री की प्रतिलिपि बनाएँ।

साझा किए गए होस्ट पर अपने कंट्रोल पैनल में लॉग इन करें और SSH में जाएं , SSH कुंजियों को प्रबंधित करें और आयात करें कुंजीसार्वजनिक बॉक्स में पेस्ट करें , और सुनिश्चित करें कि आपने इसे एक्सटेंशन के बिना सही नाम दिया है - मेरा था id_rsa। अब आपको प्रबंधन प्राधिकरण लिंक का उपयोग करके कुंजी को अधिकृत करना होगा, इसलिए यह authorized_keysफ़ाइल में संक्षिप्त हो जाएगा ।

अब आपके Git Gui और आपके Git Bash को पासवर्ड टाइप किए बिना SSH का उपयोग करने में सक्षम होना चाहिए। अजीब तरह से, मैं SSH का उपयोग करके Git Bash और Git Gui के माध्यम से पुश करने में सक्षम था, लिनक्स चलाने वाले अपने स्वयं के सर्वर पर यह ठीक था, यह केवल साझा की गई होस्टिंग थी जो मुझे फिट कर रही थी। मुझे आशा है कि यह किसी को मदद करता है क्योंकि मुझे इसके साथ आने में घंटों परीक्षण और त्रुटि हुई - और यह बहुत आसान है!


0

यदि आप Windows के लिए Git कमांड लाइन का उपयोग कर रहे हैं, तो आप निम्नानुसार कर सकते हैं:

खोलें cmd.exeऔर निष्पादित करें setx HOME c:\PATH_TO_PRIVATE_KEY

एक नया फ़ोल्डर बनाएं .ssh, (यदि मौजूद नहीं है) तो c:\PATH_TO_PRIVATE_KEYअपनी id_rsaफ़ाइल (अपनी निजी कुंजी) को उसमें कॉपी करें ।

किया हुआ। अब आप सामान्य रूप से Git कमांड लाइन का उपयोग कर सकते हैं।


0

मेरा msysgit OpenSSL / बैश Git अनुभव ( PuTTY की पलक नहीं) यह है कि आपके .ssh/फ़ोल्डर के लिए खोज क्रम निम्नानुसार है।

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

इसलिए इतने सारे लोग यह निर्धारित करने का सुझाव देते हैं HOMEकि क्या दूसरों में से एक वह नहीं है जो आप अपेक्षा करते हैं। इससे भी महत्वपूर्ण बात, आप अपने लिए जाँच कर सकते हैं; ssh -vसार्वजनिक कुंजी प्रमाणीकरण का उपयोग करने वाले सर्वर के लिए डिबग का उपयोग निम्नानुसार है:

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

हमने sshएक अस्पष्ट ड्राइव पर खोज की और पिछले उत्तरों में से कोई भी व्याख्या करने के लिए प्रतीत नहीं हुआ कि हमने क्या देखा।

कभी-कभी %HOMEDRIVE%%HOMEPATH%एक मैप्ड नेटवर्क ड्राइव (उदा H:/) होता है जो नेटवर्क / फाइलरवर समस्याओं के होने पर अनावश्यक विफलताओं का कारण बनता है, तब भी जब स्थानीय रूप से कुंजी होती %USERPROFILE%/.sshहै C:/Users/Username/.sshऔर होती है। स्थापना %HOME%के लिए %USERPROFILE%यह दूरदराज के घर ड्राइव को देखकर रुक जाती है।


0

आप PuTTY Agent (पेजेंट) को लोड कर सकते हैं और सर्वर के लिए PuTTY के साथ आपके द्वारा बनाई गई निजी कुंजी जोड़ सकते हैं।

Git इसे पहचानता है और इसका उपयोग पुश / पुल के लिए करता है।


0

मैं TortoiseGit के साथ-साथ Windows पर Git Bash का उपयोग आवश्यकता के आधार पर कर रहा था। मैंने TortoiseGit में सब कुछ जोड़ दिया है, और यह ठीक काम किया है, लेकिन Git Bash इसे नहीं उठा रहा था, भले ही चाबियाँ सही निर्देशिका में थीं। यह पता चला है कि मुझे यह गश बैश से करना था:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

आप निश्चित रूप से जहां भी आपकी कुंजी स्थित है, \\वहां से विभाजक के रूप में उपयोग करने के लिए याद करते हुए मार्ग बदल सकते हैं ।


0

यदि Windows के लिए Git का उपयोग किया जाता है, तो एक बार SSH कुंजी उत्पन्न होने के बाद, आपको अपनी SSH कुंजी को ssh-agent में जोड़ना होगा।

देखें नया SSH कुंजी जेनरेट करने और ssh-एजेंट में जोड़ने

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa

सर्वर दोष में आपका स्वागत है। इस सवाल का पहले से ही व्यापक रूप से स्वीकृत जवाब कई साल पहले स्वीकार किया गया है। नए प्रश्नों की तलाश में रहें या जिन्हें बेहतर बनाया जा सकता है।
मैथ्यू वेटमोर

1
व्यापक रूप से स्वीकार किए गए उत्तर ने मेरे लिए काम नहीं किया जबकि यह एक था। मेरा मानना ​​है कि किसी को यह जानने में मदद मिल सकती है कि ssh एजेंट के लिए चाबी जोड़ी जानी चाहिए और इसे निर्देशों की 2 लाइनों के साथ किया जा सकता है
Matoeil
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.