कैसे एक ssh-copy-id पूर्ववत करें?


15

मेरे पास 2 नोड हैडूप क्लस्टर है।

मैंने इस आज्ञा को गुरु पर चलाया:

$ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@192.168.1.1

मैं इसे पूर्ववत कैसे कर सकता हूं? मैं वास्तव में कुंजी को पुन: सौंपना चाहूंगा।

192.168.1.1 गुलाम है।

जवाबों:


20

आपके द्वारा चलाए जाने पर आपके द्वारा कॉपी की गई सार्वजनिक कुंजी को पहचानें ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH सर्वर पर आपने कुंजी की प्रतिलिपि बनाई है:

ssh hadoop@192.168.1.1

अपने पसंदीदा संपादक का उपयोग करने ~hadoop/.ssh/authorized_keysपर फ़ाइल को संपादित करें 192.168.1.1, और अपनी कुंजी वाली रेखा को हटा दें।


1
क्या इसे और अधिक स्वचालित करने का एक तरीका है? जैसेssh-rm-id hadoop@192.168.1.1
SR

@SR मुझे एक भी कमांड की जानकारी नहीं है जो इसे स्वचालित करता है। सिद्धांत रूप में, आप लाइन को संपादित करने और निकालने के लिए कमांड (या समान) को sshचलाने के लिए थोड़ा-एक लाइनर के साथ इसे "स्वचालित" कर सकते थे । देखें superuser.com/questions/429954/...sed~/.ssh/authorized_keys
डेविड एडवर्ड्स

4

यदि आपने ऐसा किया है ssh-copy-id:

remote='user@machine'
ssh-copy-id -i $remote

तो आप पासवर्ड का उपयोग किए बिना इस रिमोट मशीन का उपयोग कर सकते हैं:

ssh $remote

इसे सिस्टेमेटिक तरीके से पूर्ववत करने के लिए, आप कुछ इस तरह से स्क्रिप्ट कर सकते हैं:

idssh=$(awk '{print $2}' ~/.ssh/id_rsa.pub)
ssh $remote "sed -i '#$idssh#d' .ssh/authorized_keys"

मैं इसे उन लिपियों में उपयोग करता हूं जिनकी मुझे scpकई फ़ाइलों की आवश्यकता है , इसलिए मैं केवल एक बार पासवर्ड के लिए पूछता हूं।


1
यह थोड़ा खतरनाक हो सकता है: आप कुंजी के टिप्पणी क्षेत्र के लिए पकड़ रहे हैं । यह बिना किसी अर्थ के एक मनमाना स्ट्रिंग है और इसे एक से अधिक बार शामिल किया जा सकता है। मैं लंबी AAA....==स्ट्रिंग (वास्तविक कुंजी) के लिए या से पूरी लाइन के लिए grep चाहता हूं id_rsa.pub। लेकिन एक कुंजी को हटाने को स्वचालित करने के तरीके को दिखाने के लिए +1।
पर्लडक

1
@PerlDuck आप सही हैं। तीसरे क्षेत्र की तुलना में कुंजी ($ 2) का उपयोग करना बहुत बेहतर है। धन्यवाद।
जावी एम।

@ जवी एम। मुझे एक और मुद्दे का सामना करना पड़ा। फॉरवर्ड स्लैश डिफ़ॉल्ट रूप से उपयोग किया जाता है क्योंकि सीम में सीमांकक मेरी सार्वजनिक कुंजी में था। नतीजतन, मुझे अर्धविराम का उपयोग करना सबसे अच्छा लगा क्योंकि यह सीमांकक के रूप में है क्योंकि यह सार्वजनिक कुंजी में दिखाई देने की संभावना नहीं है। ऐसा करने के लिए, पहले चरित्र से बचना आवश्यक था। मैं कुछ इस तरह से समाप्त हुआ:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

यहां कुछ जानकारी दी गई है, जिन पर अक्षर सार्वजनिक कुंजी में समाप्त हो सकते हैं।
ccvert

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