मान लें कि आपकी .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/configssh बनाने के लिए और इस प्रकार 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 / लॉग / सुरक्षित)।