Git और SSH, किस कुंजी का उपयोग किया जाता है?


94

मान लें कि आपकी .sshनिर्देशिका में 30 कुंजी (15 निजी और 15 सार्वजनिक) हैं।

जहां Git में कोई भी चेक कर सकता है कि किसी दिए गए रिमोट रिपॉजिटरी से कनेक्ट करने के लिए किसका उपयोग किया जाता है?


10
जिसने भी "बंद" को वोट दिया, यह सवाल - सीधे उसी प्रोग्रामिंग के लिए प्रोग्रामिंग से संबंधित है, जिस कारण से जीआईटी के बारे में प्रश्न यहां दिए गए हैं
जेम्स रत्सेव

1
तर्क ... यह वास्तव में एक सुपर-उपयोगकर्ता प्रश्न है, यहां मुद्दा कोई समस्या नहीं है, लेकिन यह जिस मंच पर चल रहा है। आप समस्या के लिए "git" में जाँच नहीं कर सकते, क्योंकि git परवाह नहीं करता है, यह केवल इस बात से संबंधित है कि आप ssh का उपयोग कैसे करते हैं और कैसे कॉन्फ़िगर किया गया है। क्या आप ssh-Agent, किसी भी प्रकार की मुख्य प्रबंधन प्रणाली का उपयोग करते हैं, आप किस ऑपरेटिंग सिस्टम का उपयोग करते हैं, कौन सा संस्करण, वगैरह?
अराफांजियन

जवाबों:


67

.ssh/configफ़ाइल में निम्न प्रविष्टि समस्या को हल करती है

  host git.assembla.com
  user git
  identityfile ~/.ssh/whatever

जहां ~/.ssh/whateverआपकी निजी कुंजी के लिए एक रास्ता है

इसके अतिरिक्त, उपयोगकर्ता और होस्ट से लिया जा सकता है

git push git@git.assembla.com:repo_name.git
         ^__ ^_______________
         user host

इसलिए अगर मैं एक अलग मेजबान के लिए दूसरी ssh कुंजी का उपयोग करना चाहता था, तो क्या मैं पहले के बाद वही दोहराऊंगा ?? क्या इसके पहले पहचानकर्ता को पहले मेजबान से संबंधित है?
माइकसेम

हां, ठीक है, ऐसा लगता है कि मामला है की तरह cyberciti.biz/faq/...
MikeSchem

67

वर्बोज़ मोड, उर्फ ​​में ssh को निष्पादित करते हुए ssh -v user@host, डिबगिंग जानकारी का एक बड़ा भार मुद्रित करेगा, जिसमें यह भी विवरण होता है कि लॉगिन के लिए किस कीफ़िले पर यह प्रयास कर रहा है।

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

अब अगर आप Git के स्वयं में चरण 4 के साथ इस गठबंधन, SSH मदद पृष्ठ , ssh -vT git@github.comआप इस सवाल का जवाब दे सकते हैं।

नोट: आप -iकमांड निष्पादन के दौरान ssh को बताने के लिए स्विच का भी उपयोग कर सकते हैं , जो किफाइल का उपयोग करना है।


इसे भी देखें: stackoverflow.com/questions/18845799/…
शरद

1
आप ssh कमांड की मानक त्रुटि आउटपुट को इस तरह से कुंजी फ़ाइल खोजने के लिए तैयार कर सकते हैं: ssh -vv user@host 2> >(grep Offering)- इससे चीजें आसान हो जाएंगी। अंतिम फ़ाइल सार्वजनिक कुंजी होनी चाहिए। उदाहरण के लिए:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Gianfranco पी।

3
githubजैसी बात नहीं है git
फॉरएवरविंटर

9

जब तक यह निर्दिष्ट नहीं किया जाता है, .ssh/configयह डिफ़ॉल्ट निजी कुंजी फ़ाइल का उपयोग करेगा।

डिफ़ॉल्ट फ़ाइल है ~/.ssh/id_rsaया ~/.ssh/id_dsaया ~/.ssh/identityप्रोटोकॉल संस्करण के आधार पर।


जब ज्ञात मेजबानों में कुंजियाँ जोड़ी जाती हैं?
पहाड़

6

मैं कहूंगा कि मेरे स्वाद के लिए सबसे व्यावहारिक होगा:

GIT_SSH_COMMAND='ssh -v' git …

बेशक, परिस्थितियों के आधार पर इसे वर्तमान SHELL के वातावरण में निर्यात करना फायदेमंद हो सकता है, ताकि आपको हर बार इसे मैन्युअल रूप से प्रस्तुत न करना पड़े। तो यह इस तरह से होगा:

export GIT_SSH_COMMAND='ssh -v'
git …

- जैसा कि man gitसुझाव दिया गया है कि कुछ पर्यावरण चर हैं जो SSH के उपयोग के साथ Git के संचालन को प्रभावित करेंगे। man sshआप के अनुसार -vविकल्प की तैनाती करते समय कुछ डिबगिंग जानकारी प्राप्त कर सकते हैं (न केवल लेकिन यह भी, मैनुअल की जाँच करें यदि आप अधिक के लिए उत्सुक हैं)।

किस कुंजी का उपयोग किया जाता है?

आउटपुट में आपको smth जैसा दिखेगा…

debug1: Offering public key: …

… जो आपके qn का जवाब है।


1
हाँ। यह स्वीकृत उत्तर होना चाहिए। इसे विंडोज़ सीएमडी (यूजी) पर काम करने के लिए, उपयोग करें set GIT_SSH_COMMAND=ssh -v:। इससे मुझे यह पता लगाने में मदद मिली कि ssh-config Inlcude-Path खिड़कियों पर कुछ इस तरह होना चाहिए: Include /C/Users/YourUserName.ssh/configssh बनाने के लिए और इस प्रकार git एक कॉन्फिग फाइल का उपयोग करता है जो उदाहरण के HOST *लिए पहचान फ़ाइल git / ssh का उपयोग करने के लिए एक प्रविष्टि का उपयोग करता है।
इकिरासोर

5

चूंकि gitबस sshकनेक्ट करने के लिए उपयोग करता है, यह sshदूरस्थ होस्ट से कनेक्ट करने के लिए जो भी कुंजी का उपयोग करेगा। देखें ~/.ssh/configविवरण के लिए फ़ाइल; hostब्लॉक का उपयोग करता है IdentityFileउपयोग करने के लिए निजी कुंजी निर्दिष्ट करने के लिए निर्देश। ssh_config(5)मैनपेज पूरा विवरण होता है।


हम्म .. फ़ाइल मेरे सिस्टम पर मौजूद नहीं है। इसे होना चाहिए?
जेम्स रायत्सेव

1
@JAM आप किस OS का उपयोग कर रहे हैं? इसके अलावा, कभी-कभी कॉन्‍फ़िगर फ़ाइल होती है/etc/ssh/ssh_config

मैं एमएसीओएस पर हूं। पाया गया /etc/ssh_configजो टिप्पणी प्रविष्टियों से भरा एक फाइल प्रतीत होता है
जेम्स रितसेव

@sarnold आप ~/.ssh/configस्वयं बना सकते हैं ।
xdazz

4

यह सुपर एज हो सकता है, लेकिन ssh -vT git@github.comइसे चलाने के बाद मुझे पता चला कि यह /root/.sshचाबियों के लिए जाँच कर रहा था, मैं उम्मीद कर रहा था कि यह मेरे घर की निर्देशिका की जाँच करेगा और फिर मुझे एहसास हुआ कि मैं रूट के रूप में लॉग इन था!


यह तकनीक, sshपूछताछ के अन्य तरीकों के अलावा सही समाधान है। धन्यवाद।
ईजनफील्ड

1

दूरस्थ सर्वर पर, sshd_config फ़ाइल को संपादित करें और LogLevel को INFO से VERBOSE में बदल दें औरsh को पुनरारंभ करें।

अब आपकी लॉग फ़ाइल उस कुंजी की अंगुली पकड़ लेगी जिसका उपयोग प्रत्येक उपयोगकर्ता को प्रमाणित करने के लिए किया गया था।

उबंटू पर, ये फाइलें हैं:

/etc/ssh/sshd_config
/var/log/auth.log

लेकिन वे दूसरे डिस्ट्रो पर अलग हो सकते हैं। बस उनके स्थान के लिए Google (उदाहरण के लिए कुछ उपयोग / var / लॉग / सुरक्षित)।

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