एसएसएच कुंजी को किसी अन्य मशीन में कॉपी करने का सबसे आसान तरीका?

मैं घर पर आलसी हूं और अपने घर की मशीनों के लिए पासवर्ड प्रमाणीकरण का उपयोग करता हूं । मैं कुंजी आधारित प्रमाणीकरण पर जाने के लिए तैयार हूं । यह कैसे करना है, इस पर वेब पर कई विकल्प हैं, जिसमें कैटिंग करना और फिर कुंजी को एसएचएस करना, कुंजी को सीधे ऊपर खींचना आदि शामिल हैं ।

मैं एक कुंजी को कॉपी करने के लिए सबसे आसान और अनुशंसित तरीका ढूंढ रहा हूं, उम्मीद है कि उबंटू एसएसएच पैकेज में कहीं एक सुविधा आवरण है?

मुझे पहले से ही पता है पासवर्ड लॉगिन कैसे बंद करें.

ssh-copy-id आदेश (में ओपनएसएसएच-क्लाइंट पैकेज और डिफ़ॉल्ट रूप से स्थापित) ठीक यही करता है:

ssh-copy-id user@hostname.example.com

आपकी डिफ़ॉल्ट पहचान (उपयोग) की सार्वजनिक कुंजी की प्रतिलिपि बनाता है -i identity_file अन्य पहचान के लिए) दूरस्थ होस्ट के लिए ।

डिफ़ॉल्ट पहचान आपकी "मानक" एसएसएच कुंजी है । इसमें आपकी दो फाइलें (सार्वजनिक और निजी कुंजी) शामिल हैं ~/.ssh निर्देशिका, सामान्य रूप से नामित identity, id_rsa, id_dsa, id_ecdsa या id_ed25519 (और साथ ही .pub), कुंजी के प्रकार के आधार पर । यदि आपने एक से अधिक एसएसएच कुंजी नहीं बनाई है, तो आपको पहचान निर्दिष्ट करने के बारे में चिंता करने की ज़रूरत नहीं है, एसएसएच-कॉपी-आईडी बस इसे स्वचालित रूप से चुन लेगा ।

यदि आपके पास कोई पहचान नहीं है, तो आप उपकरण के साथ एक उत्पन्न कर सकते हैं ssh-keygen.

इसके अलावा, यदि सर्वर डिफ़ॉल्ट एक से अलग पोर्ट का उपयोग करता है (22) आपको इस तरह से उद्धरण चिह्नों का उपयोग करना चाहिए (स्रोत):

ssh-copy-id "user@hostname.example.com -p <port-number>"

मुझे मार्सेल का जवाब पसंद है । मुझे यह आदेश नहीं पता था । मैं हमेशा क्या मैं पर पाया था का उपयोग किया गया है ओरेकल वेब साइट:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

मैंने इसे अभी भी यहां पोस्ट करने के लिए सोचा, क्योंकि यह एक अच्छा उदाहरण है कि इसमें क्या हासिल किया जा सकता है शेल कोड की शक्ति के साथ ssh. लेकिन का उपयोग कर ssh-copy-id निश्चित रूप से इसे ठीक से करने का एक सुरक्षित तरीका है!

ध्यान दें कि यदि फ़ोल्डर .ssh पहले से मौजूद नहीं है, उपरोक्त आदेश विफल हो जाएगा । इसके अलावा, न्यूनतम संभव अनुमति सेट करने के लिए फ़ाइल बनाते समय यह बेहतर हो सकता है (मूल रूप से केवल मालिक के लिए पढ़ें-लिखें) । यहाँ एक अधिक उन्नत कमांड है:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

चित्रमय विधि

  1. खुला हुआ अनुप्रयोगोंपासवर्ड और कुंजीमेरी व्यक्तिगत कुंजी.
  2. अपनी कुंजी चुनें और फिर क्लिक करें रिमोटसुरक्षित शेल के लिए कुंजी कॉन्फ़िगर करें.

Set Up Computer for SSH Connection

उबंटू पर आप लॉन्चपैड से अपनी चाबियाँ ला सकते हैं:

ssh-import-id [launchpad account name]

विवरण:

  1. आपको लॉन्चपैड खाते की आवश्यकता है लॉगिन करें या खाता बनाएं
  2. लॉग इन करने के बाद, बटन पर क्लिक करें बगल में एसएसएच कुंजी:
  3. उस फ़ील्ड में अपनी सार्वजनिक कुंजी फ़ाइल की सामग्री पेस्ट करें (टिप्पणी सहित) । ऐसी कुंजी दिखती है:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn

    यहाँ, ssh-rsa इंगित करता है कि कुंजी एक आरएसए कुंजी है, AAAAB3Nza .... UyDOFDqJp वास्तविक कुंजी है और lekensteyn टिप्पणी है ।

  4. दबाकर कुंजी सहेजें सार्वजनिक कुंजी आयात करें
  5. यदि सब कुछ ठीक रहा, तो आपकी कुंजी अब नीचे सूचीबद्ध होनी चाहिए एसएसएच कुंजी:

पैकेज ssh-import-id मशीन पर स्थापित करने की आवश्यकता है जिसे रिमोट से एक्सेस करना होगा । इस पैकेज के साथ एक साथ स्थापित किया गया है openssh-server पैकेज के रूप में यह एक अनुशंसित पैकेज है openssh-server. यह सुनिश्चित करने के बाद कि ssh-import-id क्लाइंट मशीन पर स्थापित किया गया है, चलाएं:

ssh-import-id [launchpad account name]

यह एचटीटीपीएस पर लॉन्चपैड सर्वर से सार्वजनिक कुंजी डाउनलोड करेगा जो आपको एमआईटीएम हमलों से बचाता है ।

उबंटू ल्यूसिड पर और इससे पहले, आप इसे पूरा कर सकते हैं:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

echo एसएसएच कुंजी के साथ लाइन के बाद एक अतिरिक्त नई लाइन प्राप्त करने के लिए कमांड की आवश्यकता है ।

कस्टम पोर्ट के लिए

ssh-copy-id -i "user@hostname.example.com -p2222"

- मैं डिफ़ॉल्ट को ~ / पर स्विच करता हूं । एसएसएच / आईडी_आरएसए।पब, यदि आप एक और कुंजी चाहते हैं, तो कुंजी का पथ डालें-मैं

चेतावनी: यदि आपने नहीं लिखा है-मैं यह ~/में मिली आपकी सभी चाबियों की प्रतिलिपि बनाऊंगा । एसएसएच

यहां एक कम सुरक्षित, लेकिन बहुत सरल समाधान है(सर्वर के लिए अनुशंसित नहीं):

हटो ~/.ssh नई मशीन और चलाने के लिए ssh-add. हो गया!

लंबा जवाब:

  1. पुरानी मशीन में, फ़ोल्डर ले लो ~/.ssh एक यूएसबी ड्राइव के लिए, या किसी अन्य भंडारण के लिए जिसे आप पसंद करते हैं ।
  2. नई मशीन पर, फ़ोल्डर को नीचे रखें ~ उर्फ /home/$USER.
  3. भागो ssh-add, नई मशीन पर किया।

ssh-copy-id ठीक यही करता है । मुझे यकीन नहीं है कि यहां कुछ अन्य उत्तर गलत जानकारी क्यों जोड़ते हैं । सहायता निम्नलिखित दिखाती है:

~$ ssh-copy-id -hUsage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname    -f: force mode -- copy keys without trying to check if they are already installed    -n: dry run    -- no keys are actually copied    -h|-?: print this help

मैंने उबंटू 18.04 क्लाइंट पर सेंटोस 7.6 सर्वर के साथ निम्नलिखित की कोशिश की और यह एक आकर्षण की तरह काम किया । उदाहरण एक कस्टम पोर्ट का उपयोग करके दिखाता है 2222, और एक सार्वजनिक कुंजी निर्दिष्ट करना ~/.ssh/path-to-rsa.pub

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld

कमांड चलाने से पहले, मैंने वास्तव में इस्तेमाल किया -n ड्राई रन करने के लिए अंत में स्विच करें जिसने पुष्टि की कि कमांड इरादा के अनुसार काम करेगा । एक बार जब मैंने इसकी पुष्टि की तो मैंने ऊपर के रूप में फिर से कमांड चलाया, बिना -n स्विच.

यदि आपके पास पहले से ही एडब्ल्यूएस ईसी 2 के मामले में होस्ट कुंजी है, तो ऐसा करें

cat ~/.ssh/id_rsa.pub | ssh -i hostkey.pem hostname@hostaddress 'cat >> .ssh/authorized_keys && echo "Key copied" '

अगली बार, बस ऐसा करें:

ssh hostname@hostaddress