यहाँ मैंने कोशिश की है, और मुझे एक त्रुटि मिली है:
$ 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_keys
ssh- एजेंट से आवश्यक मूलभूत जानकारी बनाता है और भरता है।
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
कभी-कभी यह काम में आ सकता है, खासकर अगर हम इसे एक गैर-मानक स्थान पर संग्रहीत करते हैं या हमारे कंप्यूटर पर एक से अधिक सार्वजनिक कुंजी होती है और हम किसी विशिष्ट को इंगित करना चाहते हैं।