किसी अन्य मशीन पर ssh कुंजी कॉपी करें ताकि मैं GitHub का उपयोग कर सकूं?


12

मेरे पास एक रिमोट सर्वर है। मैं पहले से ही उस रिमोट सर्वर पर सफलतापूर्वक ssh कर सकता हूं - मेरी कुंजी authorized_keysरिमोट सर्वर पर है।

अब मैं उस रिमोट सर्वर पर सीधे GitHub से खींचना चाहता हूं। लेकिन मुझे मिल रहा है permission denied (publickey)जब मैं ssh -T git@github.comरिमोट सर्वर पर कोशिश करता हूं ।

क्या मुझे id_rsa.pubदूरस्थ सर्वर पर अपनी स्थानीय मशीन से सीधे कॉपी करना चाहिए , या यह खतरनाक है?

यदि यह उत्तर है, तो इसे करने का सबसे अच्छा तरीका क्या है?

या मुझे रिमोट सर्वर पर एक नई सार्वजनिक कुंजी उत्पन्न करनी चाहिए, और मुझे अपने गितुब एकोाउंट में जोड़ना होगा?

अपडेट करें:

यहाँ एक क्रिया ssh से आउटपुट है:

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

मैंने अभी अपने सर्वर के आईपी पते का उपयोग करके ssh एजेंट को अग्रेषित करने की कोशिश की है: developer.github.com/guides/use-ssh-agent-forwarding लेकिन मैं अभी भी Permission denied (publickey)रिमोट मशीन पर मिल रहा हूं ।
रिचर्ड

1
ssh कमांड पर एक वर्बोज़ ऑप्शन है, मुझे लगता है कि यह आपको बता सकता है कि यह वास्तव में किस प्रमुख फाइल की कोशिश कर रहा है, इससे मुझे कुछ समय में मदद मिली है।
ऑलमैन

जवाबों:


4

id_rsa.pubकिसी भी वास्तविक खतरे के बिना कहीं भी कॉपी किया जा सकता है। यह आपकी सार्वजनिक कुंजी है, और इस तरह की चीजों के लिए है। यह एक कीपर का आधा हिस्सा है, और इसे उन स्थानों के साथ साझा करना है जहां आप चाहते हैं कि आप निजी कुंजी को कैसे काम करने दें।

दूरस्थ लॉगिन के लिए अनुमति देने के लिए, अपने सार्वजनिक कुंजी में सूचीबद्ध होने की जरूरत है authorized_keys( authorized_keys2कुछ सिस्टम पर)। इस प्रारूप में प्रत्येक पंक्ति पर एक कुंजी:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

इसे प्राप्त करने के लिए, इसे एक बार कॉपी करने के बाद, इसे authorized_keysइस तरह फ़ाइल में जोड़ें :cat id_rsa.pub >> ~/.ssh/authorized_keys

अधिकांश सेंस सिस्टम आपको कायर-आधारित लॉगिन का उपयोग करने की अनुमति देने से इनकार कर देंगे यदि .sshफ़ोल्डर में अनुमतियाँ बहुत ढीली हैं। फ़ोल्डर होना चाहिए 700, इसलिए यदि आपको अभी भी समस्या हो रही है:chmod 700 ~/.ssh

इसके अलावा, .sshफ़ोल्डर में फ़ाइलें 600 होनी चाहिए:chmod 600 ~/.ssh


1 संपादित करें:

id_rsa.pubदूरस्थ सर्वर पर स्वयं फ़ाइल की आवश्यकता नहीं है। केवल सामग्री, के भाग के रूप में authorized_keys। मैं ssh -vT git@github.comवर्बोज़ लॉगिंग को सक्षम करने के लिए चलने की सलाह देता हूं , ताकि आप देख सकें कि इसके बारे में क्या अनुमतियाँ हैं।

2 संपादित करें:

इसका मतलब यह है कि पेशकश की गई कोई भी कुंजी मेल नहीं खाती है कि रिमोट सर्वर की फाइल क्या है। आप जो देखना चाहते हैं वह कुछ इस तरह है:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

जाँच करने के लिए चीजें:

  • सुनिश्चित करें कि निजी कुंजी में से एक वह है जो उस सार्वजनिक कुंजी से मेल खाती है जिसे आपने रिमोट में जोड़ा था authorized_keys
  • सुनिश्चित करें कि आप जिस उपयोगकर्ता नाम से लॉग इन करने का प्रयास कर रहे हैं, वह कुंजी से मेल खाता है (सार्वजनिक कुंजी का अंतिम भाग होना चाहिए)
  • का नाम बदलने authorized_keysका प्रयास करेंauthorized_keys2

धन्यवाद। मेरी सार्वजनिक कुंजी ~/.ssh/authorized_keysदूरस्थ सर्वर पर सूचीबद्ध है - मैंने इसका उपयोग करके जोड़ा है cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"। तो दूरस्थ और चलने के sshed ~$ chmod 700 ~/.ssh और $ chmod 600 ~/.ssh/authorized_keysलेकिन अभी भी मिलता है Permission denied (publickey)जब मैं GitHub को ssh का प्रयास करें। क्या मुझे id_rsa.pubदूरस्थ मशीन में भी पूरी फाइल कॉपी करनी चाहिए ?
रिचर्ड

@ रीचर्ड आपको वहां फ़ाइल की आवश्यकता नहीं है, नहीं। हालाँकि मैं इसे .ssh फोल्डर में रखना चाहता हूँ अगर मुझे इसकी आवश्यकता हो तो। लेकिन इसकी आवश्यकता नहीं है, यह सिर्फ कुछ है जो मैं करता हूं। मैं sshआपके प्रश्न में वर्णित कमांड को -vस्विच के साथ चलाने की सिफारिश करूंगा ताकि यह देखा जा सके कि कौन सी अनुमतियां ssh के बारे में शिकायत कर रही हैं।
जरमुंड

संपादन के लिए धन्यवाद 2. मुझे यकीन नहीं है कि पहली गोली बिंदु कैसे करें - check that one of the private keys...- मुझे यहां क्या करना चाहिए?
रिचर्ड

बिंदु 2 पर, क्या आपको लगता है कि कुंजी को मेरे GitHub उपयोगकर्ता नाम से मेल खाना चाहिए? यह ऐसा कुछ भी नहीं दिखता है :)
रिचर्ड

बात यह है कि मैं अपने स्थानीय मशीन से GitHub से ठीक करने और खींचने के लिए इस समान सार्वजनिक कुंजी का उपयोग कर सकता हूं, इसलिए GitHub को यह सोचना चाहिए कि यह ठीक है ...?
रिचर्ड

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

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

ssh -i /path/to/some_key -Tv git@github.com

कुंजी फ़ाइल दूरस्थ सर्वर पर मौजूद नहीं है जिसमें से मैं गितुब को ssh करने की कोशिश कर रहा हूं, लेकिन यह अंदर है authorized_keys। क्या यह पर्याप्त है या क्या मुझे वहाँ भी कुंजी फ़ाइल की प्रतिलिपि बनाने की आवश्यकता है?
रिचर्ड

1
authorized_keysके लिए है सार्वजनिक कुंजी है कि के लिए स्वीकार किया जाएगा भेजे कनेक्शन। किसी अन्य होस्ट के लिए आउटगोइंग कनेक्शन बनाने के लिए आपको निजी कुंजी फ़ाइल की एक प्रति चाहिए । तो हाँ, उन प्रमुख फ़ाइलों (id_rsa, आदि) में से एक को उस होस्ट पर उपस्थित होना होगा जहाँ आप ssh चला रहे हैं।
केंस्टर

-I ध्वज ने मुझे एक समस्या को हल करने में मदद की! मैंने ssh फ़ोल्डर को दूसरे कंप्यूटर पर कॉपी किया और रिमोट गीट का उपयोग करने की कोशिश कर रहा था, लेकिन खारिज कर दिया गया। -मैंने दिन बचाया!
पॉलजोन 32

2

Github को प्रमाणित करने के लिए सर्वर को आपकी निजी कुंजी की आवश्यकता होती है। आपकी सार्वजनिक कुंजी, जैसा कि इसके नाम से पता चलता है, को सार्वजनिक माना जाता है, इसलिए इसे प्रमाणित करने के लिए पर्याप्त नहीं हो सकता है।

यदि आपको ssh के माध्यम से कनेक्ट किए बिना दूरस्थ सर्वर पर Github का उपयोग करने की आवश्यकता नहीं है, तो आपको ssh-Agent अग्रेषण का उपयोग करना चाहिए। इसके लिए एक मार्गदर्शिका जीथब पर उपलब्ध है: https://developer.github.com/guides/use-ssh-agent-forwarding/

अन्यथा, आपको एक नई कुंजी उत्पन्न करनी चाहिए और इसे अपने खाते से जोड़ना होगा।


0

आप सीधे कमांड डाल सकते हैं।

$ बिल्ली ~ /। ssh / id_rsa.pub

यदि आपके पास ssh कुंजी पहले से मौजूद है तो वह इसे दिखाएगा। अन्यथा यह त्रुटि देता है। आपको नई कुंजी जोड़ने की आवश्यकता है।

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