यहाँ मैंने कोशिश की है, और मुझे एक त्रुटि मिली है:
$ cat /home/tim/.ssh/id_rsa.pub | ssh tim@just.some.other.server 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
यहाँ मैंने कोशिश की है, और मुझे एक त्रुटि मिली है:
$ cat /home/tim/.ssh/id_rsa.pub | ssh tim@just.some.other.server 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
जवाबों:
OpenSSH ऐसा करने के लिए एक कमांड के साथ आता है ssh-copy-id,। आप इसे केवल दूरस्थ पता देते हैं और यह authorized_keysदूरस्थ मशीन पर फ़ाइल में आपकी सार्वजनिक कुंजी जोड़ता है :
$ ssh-copy-id tim@just.some.other.server
आपको -iअपनी स्थानीय मशीन पर सार्वजनिक कुंजी खोजने के लिए ध्वज का उपयोग करने की आवश्यकता हो सकती है :
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tim@just.some.other.server
>>आपके शेल द्वारा नियंत्रित किया जाता है, और आप शेल के बजाय SSH के माध्यम से कमांड चला रहे हैं। SSH एक खोल, जो फिर अपना आदेश चलाता को दिखाए जाने का उनका ठीक, काम करना चाहिए
ssh-copy-idकाम करना सही नहीं होगा?
आप हमेशा कुछ ऐसा कर सकते हैं:
scp ~/.ssh/id_rsa.pub user@remote.example.com:/tmp/id_rsa.pub
ssh user@remote.example.com
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
मुझे यकीन नहीं है कि आप catएक स्थानीय मशीन से एक सत्र सत्र में कर सकते हैं। बस इसे सुझाव के अनुसार / tmp में ले जाएँ।
संपादित करें: यह वास्तव में क्या ssh-copy-idकरता है। जैसे माइकल ने कहा।
catया अन्यथा) से डेटा को पाइप कर सकते हैं । आप जो वर्णन कर रहे हैं वह पुराने ढंग का है; ssh-copy-idकी सिफारिश की जाती है क्योंकि टाइपोस या फाइलों को गलत अनुमतियाँ देने का कम जोखिम है।
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'।
यह उत्तर बताता है कि कैसे काम करने के तरीके को दिखाया गया है।
आप >>पुनर्निर्देशन ऑपरेटर के विशेष अर्थ की व्याख्या करने के लिए दूरस्थ कंप्यूटर पर एक शेल निष्पादित कर सकते हैं :
ssh tim@just.some.other.server sh -c "'cat >> .ssh/authorized_keys'" < /home/tim/.ssh/id_rsa.pub
पुनर्निर्देशन ऑपरेटर >>को आमतौर पर एक शेल द्वारा व्याख्या की जाती है।
जब आप निष्पादित करते हैं ssh host 'command >> file'तो यह गारंटी नहीं है कि command >> fileएक शेल द्वारा व्याख्या की जाएगी। आपके मामले command >> fileमें विशेष व्याख्या के बिना शेल के बजाय निष्पादित >>किया जाता है और कमांड को एक तर्क के रूप में दिया गया था - उसी तरह जैसे command '>>' fileशेल में चल रहा है।
SSH (OpenSSH_5.9) के कुछ संस्करण स्वचालित रूप से दूरस्थ सर्वर पर शेल का आह्वान करेंगे और कमांड को इसे पास करेंगे जब वे एक शेल द्वारा व्याख्या किए जाने वाले टोकन का पता लगा लेंगे ; > >>आदि।
opensshप्रदान करता है ssh-copy-id। अनुक्रम होगा:
एक सभ्य 4k कुंजी उत्पन्न करें
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa4k
अपने ssh- एजेंट को शुरू करें और जैसे जानकारी SSH_AGENT_PIDआदि में चूसें ।
ssh-agent -s > ~/mysshagent
source ~/mysshagent
rm ~/mysshagent
अब अपने SSH Agent में चाबियाँ लोड करना शुरू करें
ssh-add ~/.ssh/id_rsa4k
जांचें कि यह लोड है
ssh-add -l
ssh-add -L
यह आपको दिखाएगा कि आपके पास ssh-Agent में क्या है
अब वास्तव में SSH एक दूरस्थ प्रणाली के लिए
ssh username@remotehost.network
अब आप ssh-copy-id को बिना किसी तर्क के चला सकते हैं:
ssh-copy-id
यह ~/.ssh/authorized_keysssh- एजेंट से आवश्यक मूलभूत जानकारी बनाता है और भरता है।
22 से अधिक पोर्ट चुनने पर मुझे ssh-copy-id से परेशानी हुई ... इसलिए यहाँ एक अलग ssh-port (जैसे 7572) के साथ मेरा ऑनलाइनर है:
ssh yourServer.dom -p7572 "mkdir .ssh; chmod 700 .ssh; umask 177; sh -c 'cat >> .ssh/authorized_keys'" < .ssh/id_rsa.pub
वास्तव में the ssh-copy-idकमांड बिलकुल यही करता है ( openssh-clientपैकेज से):
ssh-copy-id user@host
नोट: आईपी पते या डोमेन काhost मतलब है ।
मैं भी कुछ जोड़ना चाहते हैं में अतिरिक्त जानकारी के लिए इस के लिए
1) हम गंतव्य सर्वर पर SSH के लिए एक अलग पोर्ट निर्दिष्ट कर सकते हैं :
ssh-copy-id "-p 8127 user@host"
नोट: बंदरगाह के सामने होना चाहिए या यह समाधान नहीं होगा।user@host
2) हम एक सार्वजनिक कुंजी के साथ एक फ़ाइल निर्दिष्ट कर सकते हैं :
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
नोट: विकल्प हमें फ़ाइल है कि सार्वजनिक कुंजी है के साथ नाम का उचित स्थान इंगित करने के लिए अनुमति देता है।-i
कभी-कभी यह काम में आ सकता है, खासकर अगर हम इसे एक गैर-मानक स्थान पर संग्रहीत करते हैं या हमारे कंप्यूटर पर एक से अधिक सार्वजनिक कुंजी होती है और हम किसी विशिष्ट को इंगित करना चाहते हैं।