मान लें कि आपकी .ssh
निर्देशिका में 30 कुंजी (15 निजी और 15 सार्वजनिक) हैं।
जहां Git में कोई भी चेक कर सकता है कि किसी दिए गए रिमोट रिपॉजिटरी से कनेक्ट करने के लिए किसका उपयोग किया जाता है?
मान लें कि आपकी .ssh
निर्देशिका में 30 कुंजी (15 निजी और 15 सार्वजनिक) हैं।
जहां Git में कोई भी चेक कर सकता है कि किसी दिए गए रिमोट रिपॉजिटरी से कनेक्ट करने के लिए किसका उपयोग किया जाता है?
जवाबों:
.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 को निष्पादित करते हुए 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 को बताने के लिए स्विच का भी उपयोग कर सकते हैं , जो किफाइल का उपयोग करना है।
ssh -vv user@host 2> >(grep Offering)
- इससे चीजें आसान हो जाएंगी। अंतिम फ़ाइल सार्वजनिक कुंजी होनी चाहिए। उदाहरण के लिए:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
जैसी बात नहीं है git
।
जब तक यह निर्दिष्ट नहीं किया जाता है, .ssh/config
यह डिफ़ॉल्ट निजी कुंजी फ़ाइल का उपयोग करेगा।
डिफ़ॉल्ट फ़ाइल है ~/.ssh/id_rsa
या ~/.ssh/id_dsa
या ~/.ssh/identity
प्रोटोकॉल संस्करण के आधार पर।
मैं कहूंगा कि मेरे स्वाद के लिए सबसे व्यावहारिक होगा:
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 का जवाब है।
set GIT_SSH_COMMAND=ssh -v
:। इससे मुझे यह पता लगाने में मदद मिली कि ssh-config Inlcude-Path खिड़कियों पर कुछ इस तरह होना चाहिए: Include /C/Users/YourUserName.ssh/config
ssh बनाने के लिए और इस प्रकार git एक कॉन्फिग फाइल का उपयोग करता है जो उदाहरण के HOST *
लिए पहचान फ़ाइल git / ssh का उपयोग करने के लिए एक प्रविष्टि का उपयोग करता है।
चूंकि git
बस ssh
कनेक्ट करने के लिए उपयोग करता है, यह ssh
दूरस्थ होस्ट से कनेक्ट करने के लिए जो भी कुंजी का उपयोग करेगा। देखें ~/.ssh/config
विवरण के लिए फ़ाइल; host
ब्लॉक का उपयोग करता है IdentityFile
उपयोग करने के लिए निजी कुंजी निर्दिष्ट करने के लिए निर्देश। ssh_config(5)
मैनपेज पूरा विवरण होता है।
/etc/ssh/ssh_config
/etc/ssh_config
जो टिप्पणी प्रविष्टियों से भरा एक फाइल प्रतीत होता है
~/.ssh/config
स्वयं बना सकते हैं ।
यह सुपर एज हो सकता है, लेकिन ssh -vT git@github.com
इसे चलाने के बाद मुझे पता चला कि यह /root/.ssh
चाबियों के लिए जाँच कर रहा था, मैं उम्मीद कर रहा था कि यह मेरे घर की निर्देशिका की जाँच करेगा और फिर मुझे एहसास हुआ कि मैं रूट के रूप में लॉग इन था!
ssh
पूछताछ के अन्य तरीकों के अलावा सही समाधान है। धन्यवाद।
दूरस्थ सर्वर पर, sshd_config फ़ाइल को संपादित करें और LogLevel को INFO से VERBOSE में बदल दें औरsh को पुनरारंभ करें।
अब आपकी लॉग फ़ाइल उस कुंजी की अंगुली पकड़ लेगी जिसका उपयोग प्रत्येक उपयोगकर्ता को प्रमाणित करने के लिए किया गया था।
उबंटू पर, ये फाइलें हैं:
/etc/ssh/sshd_config
/var/log/auth.log
लेकिन वे दूसरे डिस्ट्रो पर अलग हो सकते हैं। बस उनके स्थान के लिए Google (उदाहरण के लिए कुछ उपयोग / var / लॉग / सुरक्षित)।