एक निजी कुंजी का उपयोग करके दूरस्थ सर्वर पर एसएचएस कैसे करें?


77

मेरे पास दो सर्वर हैं। दोनों सर्वर CentOS 5.6 में हैं। मैं एक निजी कुंजी का उपयोग करके सर्वर 1 से सर्वर 2 तक एसएसएच चाहता हूं (ओपनएसएसएच एसएसएच -2 निजी कुंजी)।

मुझे नहीं पता कि इसे यूनिक्स पर कैसे करना है। लेकिन मैंने पुट्टी का उपयोग करते हुए खिड़कियों पर जो कुछ किया वह मेरी ओपनएसएसएच निजी कुंजी को पोटीन-जीन को खिलाने और पीपीके प्रारूप में एक निजी कुंजी उत्पन्न करने के लिए था।

हालाँकि, मैं सर्वर 1 से एक बैश स्क्रिप्ट बना रहा हूँ जो SSH के माध्यम से सर्वर 2 पर कुछ कमांड निष्पादित करेगा।

मैं सर्वर 1 से अपनी निजी कुंजी फ़ाइल का उपयोग करके सर्वर 2 पर एसएसएच कैसे कर सकता हूं?


1
कई लिनक्स और यूनिक्स प्रणालियों पर, इसका उपयोग किया जा सकता हैssh-copy-id user@machine
पॉल टॉम्बलिन

जवाबों:


66

आपको अपनी SSH सार्वजनिक कुंजी की आवश्यकता है और आपको अपनी ssh निजी कुंजी की आवश्यकता होगी। कुंजी के साथ उत्पन्न किया जा सकता है ssh_keygen। निजी कुंजी को सर्वर 1 पर रखा जाना चाहिए और सार्वजनिक कुंजी को सर्वर 2 पर संग्रहीत किया जाना चाहिए।

यह पूरी तरह से ओपनश के मैनपेज में वर्णित है, इसलिए मैं इसे बहुत अधिक उद्धृत करूंगा। आपको अनुभाग 'प्रमाणीकरण' पढ़ना चाहिए। इसके अलावा ओपनएसएसएच मैनुअल वास्तव में उपयोगी होना चाहिए: http://www.openssh.org/manual.html

कृपया ssh से सावधान रहें क्योंकि इससे आपके सर्वर की सुरक्षा प्रभावित होती है।

से man ssh:

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

इसका अर्थ है कि आप अपनी निजी कुंजी को अपने घर निर्देशिका में .sh पर संग्रहीत कर सकते हैं। एक और संभावना -iएक विशेष पहचान फ़ाइल का उपयोग करने के लिए पैरामीटर स्विच के माध्यम से ssh बताने की है । इसके अलावा man ssh:

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

यह निजी कुंजी के लिए है। अब आपको सर्वर 2 पर अपनी सार्वजनिक कुंजी शुरू करने की आवश्यकता है। फिर से एक उद्धरण man ssh:

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

प्राप्त करने का सबसे आसान तरीका है कि फ़ाइल को सर्वर 2 में कॉपी करें और उसे अधिकृत_की फ़ाइल में संलग्न करें:

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

सार्वजनिक कुंजी के माध्यम से प्राधिकरण ssh डेमॉन के लिए अनुमति दी जानी चाहिए, देखें man ssh_config। आमतौर पर यह विन्यास फाइल में निम्नलिखित कथन को जोड़कर किया जा सकता है:

PubkeyAuthentication yes

10
हाय प्रयास के लिए धन्यवाद, लेकिन मुझे केवल इसकी आवश्यकता है। ssh -i keyfileधन्यवाद!
अवन मोनसेलर

8
कुंजी, सर्वर पर स्थापित करने के लिए सबसे आसान और सिफारिश की तरह से तैयार करने के बाद साथ है ssh-copy-id: ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com
गिल्स

5
यह दिलचस्प है कि हर कोई यह उल्लेख करना भूल जाता है कि ssh-addजिस कंप्यूटर से आप कनेक्ट कर रहे हैं उस पर एक कुंजी बनाने के बाद आपको चलाने की आवश्यकता है । यही कारण है कि ज्यादातर लोगों के लिए सिरदर्द होता है।
लुका

3
महत्वपूर्ण नोट: ग्राहक के पास कई निजी कुंजियाँ हो सकती हैं और उनके निजी ~ / .ssh / config फ़ाइल में एक मनमाना नाम के आधार पर चयन कर सकते हैं जहाँ Host = होस्ट को मनमाना नाम देता है, HostName या तो एक नाम या IP पता देता है, पोर्ट = लक्ष्य पोर्ट। उपयोगकर्ता गंतव्य उपयोगकर्ता नाम है, और ItentityFile = निजी कुंजी फ़ाइल को इंगित करता है। इस सुविधा सेट को अक्सर अनदेखा कर दिया जाता है और कई कॉन्फ़िगरेशन समस्याओं का समाधान होता है, जैसे कि कई कुंजी-जोड़े जो अन्यथा नाम-स्थान में टकराते हैं।
रिचर्ड टी

1
जब मैं कोशिश करता हूं और एसएसएच के साथ जुड़ता हूं, तो मुझे $ ssh -i ~/.ssh/id_rsa myuser@ssh.myhost.comत्रुटि मिलती है कि myuser@ssh.myhost.com: Permission denied (publickey).मेरे पास कुंजी है, जिसे स्थानीय स्तर पर उपयोग करके जोड़ा गया है ssh-add, और रिमोट सर्वर पर अधिकृत कुंजी के रूप में जोड़ा गया है।
एरोन फ्रेंके

21

मैंने आपकी कुंजी यहाँ जोड़ने के लिए -i विकल्प के साथ ssh का उपयोग किया।

यदि आप .sh फ़ाइल के साथ arg1, arg2 पास करना चाहते हैं, तो .sh फ़ाइल के बाद इसे पास करें और इसे अलग करने के लिए उपयोग स्थान का उपयोग करें।

ssh -i home/avr/new.pem ar@231.221.54.8 "/var/www/beta/betatolive.sh mmin 30"


1
सही अनुमतियां सेट करना न भूलें:chmod 600 home/avr/new.pem
ब्रायन हाक

16

पहली चीज़ जो आपको करने की ज़रूरत है, यह सुनिश्चित करें कि आपने कुंजियाँ बनाने के लिए keygen कमांड को चलाया है:

ssh-keygen -t rsa

फिर रिमोट सर्वर की कुंजी को पुश करने के लिए इस कमांड का उपयोग करें, इसे अपने सर्वर नाम से मिलान करने के लिए संशोधित करें।

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

6
ssh-copy-id user@hostnameइसके बजाय फोन करें
andrej

7

id_[rd]sa.pubअपने ~/.ssh/authorized_keysउपयोगकर्ता नाम के लिए गंतव्य सर्वर की फ़ाइल के लिए अपने स्रोत मशीन (जहाँ से आप sshing कर रहे हैं) के लिए सार्वजनिक कुंजी ( ) जोड़ें । यदि आपने सार्वजनिक कुंजी खो दी है, तो आप एक नया बनाना चाहते हैं ssh-keygen। इसके लिए डिफ़ॉल्ट तर्कों का उपयोग करना अधिकांश उद्देश्यों के लिए ठीक होना चाहिए। यदि आपको अधिक विस्तृत निर्देशों की आवश्यकता है, तो हजारों ट्यूटोरियल हैं जो आप Google कर सकते हैं।


4

ssh-copy-id - किसी दूरस्थ मशीन पर लॉगिन को अधिकृत करने के लिए स्थानीय रूप से उपलब्ध कुंजियों का उपयोग करें

ssh-copy-idसर्वर 1 पर प्रयोग करें , यह मानते हुए कि आपके पास प्रमुख जोड़ी है (साथ उत्पन्न ssh-keygen):

ssh-copy-id -i ~/.ssh/id_rsa user@server2_hostname

अब आपको निजी कुंजी का उपयोग करके ssh के साथ सर्वर 2 में ssh करने में सक्षम होना चाहिए

ssh -i ~/.ssh/id_rsa user@server2_hostname

वास्तव में, यदि आप cat ~/.ssh/authorized_keysसर्वर 2 पर जांच करते हैं , तो आप देखेंगे कि सार्वजनिक कुंजी आपके लिए संलग्न है।

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