बिना प्रमाणीकरण के एसएसएच पर बिना रुकावट


12

मैं एक RSync जॉब सेट करना चाहता हूं जो SSH के माध्यम से कनेक्ट हो।

मेरे पास मेरा कंप्यूटर (बैकअप @ मायहोस्ट) और रिमोट होस्ट (टेस्ट @ रेमहोस्ट) है और मुझे फ़ोल्डर को बैकअप करने की आवश्यकता है ~ / कुछ यह सब सामग्री के साथ है। Ssh उपयोगकर्ता परीक्षण में केवल ~ / फ़ोल्डर में सभी फ़ाइलों और फ़ोल्डरों तक पहुंच है। मैं rsync का उपयोग परीक्षण @ remhost: ~ / कुछ फ़ोल्डर को बैकअप @ myhost: ~ / bak फ़ोल्डर में कॉपी करने के लिए करना चाहता हूं।

इस प्रयोजन के लिए मैं Ubuntu 11.10 (Oneiric) पर BASH के माध्यम से निम्न कमांड का उपयोग करता हूं:

rsync -avz -e ssh test@remhost:~/something/ ~/bak/

प्रवेश करने के बाद मुझे यह मिलता है:

test@remhost's password:

मैं पासवर्ड टाइप करता हूं और rsync काम करता है।

मैं उपरोक्त आदेश को स्वचालित रूप से पासवर्ड इनपुट करने और इसे एक पैरामीटर के रूप में पास करना चाहता हूं या स्वचालित रूप से इनपुट करना चाहता हूं और काम शुरू करना चाहता हूं।

मैंने निष्पादित करने की कोशिश की rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/लेकिन यह अभी भी पासवर्ड के लिए पूछता है और यह कष्टप्रद है।

मैं किसी भी प्रकार की कुंजी (आरएसए, डीएसए या किसी अन्य) के बारे में नहीं सुनना चाहता। मैं बस एक साधारण कमांड चाहता हूं जो मुझे लॉग इन करे और काम करे।

EDIT: एक संभावित परिदृश्य हो सकता है, अगर सार्वजनिक कुंजी प्रमाणीकरण अक्षम है और आप इसे बदल नहीं सकते हैं। उदाहरण के लिए यदि आप OpenSSH का उपयोग करते हैं, तो फ़ाइल को संपादित करने sshd_configऔर जोड़ने के लिए आपको सर्वर पर रूट विशेषाधिकारों की आवश्यकता होगी PubkeyAuthentication yes

संपादित करें: यह वही है जो अंत में मेरे लिए काम करता है:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

कृपया ध्यान दें कि इस विधि को सुरक्षित नहीं माना जाता है क्योंकि यह सादे पाठ में पासवर्ड भेजता है और यह मध्य-मध्य हमलों के लिए असुरक्षित है। यह एक मजबूत सुरक्षा के लिए प्रमुख पुष्टिकरण का उपयोग करने की सलाह दी जाती है।


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

7
यह निराधार है। कुंजी प्रमाणीकरण के साथ समस्या क्या है? यदि कुंजी आधारित प्रमाणीकरण कॉन्फ़िगर किया गया है, तो उस बिंदु से आपके पास केवल एक साधारण कमांड है जो काम करता है, स्वचालित रूप से, ठीक वैसा ही जैसा आप चाहते हैं। इसलिए मैं यह नहीं देख सकता कि इससे क्या समस्या है। पासवर्ड को कहीं रखने के लिए इसे "स्वचालित रूप से" निर्दिष्ट करना एक सबसे बड़ा सुरक्षा छेद है जिसकी मैं कल्पना कर सकता हूं, ऐसा करने का क्या मतलब है?
एलजीबी

मुझे सुरक्षा पर मुझे व्याख्यान देने के लिए किसी की आवश्यकता नहीं है। मैं पहले से ही निहितार्थ जानता हूं। मुझे बस सर्वर पर सब कुछ छोड़ना है और कुछ भी नहीं बदलना है। आपकी जानकारी के लिए मैंने पहले ही कोशिश की थी कि चाबियों के साथ और यह अभी भी मुझसे पासवर्ड मांगे इसलिए आपका तर्क अमान्य है!
सोरिन-मिहाई

1
नहीं, अच्छे कारणों से डिफ़ॉल्ट रूप से ऐसा कोई पैरामीटर नहीं है। यदि आप ऐसा पैरामीटर चाहते हैं, तो मिग्स के उत्तर को देखें।
लुम्ब्रिक

2
@ सोरीन मिहाई ओपरा: ठीक है, अगर यह आपके लिए काम नहीं करता है, तो यह बुरा है? दिलचस्प। आपकी जानकारी के लिए: ISP में काम करने वाले इंटरनेट सिस्टम इंजीनियर के रूप में हम 100 से अधिक सर्वरों पर ssh के साथ कुंजी आधारित प्रमाणीकरण का उपयोग करते हैं। यह हमारे लिए काम करता है, दिलचस्प है। कुछ बुरा मत कहो, क्योंकि तुम यह नहीं समझते कि यह कैसे काम करता है और इसे कैसे कॉन्फ़िगर किया जाना चाहिए। यदि आप सही हैं, तो यह किसी के लिए काम नहीं करेगा जो एक प्रमुख ssh सर्वर कार्यान्वयन बग के रूप में कुछ ध्यान आकर्षित करेगा :) इसलिए मेरा एग्रीकल्चर अमान्य नहीं है, बस आप इसे किसी कारण से अच्छी तरह से कॉन्फ़िगर नहीं कर सकते हैं। यह वही नहीं है, क्षमा करें।
एलजीबी

जवाबों:


30

शायद sshpass की कोशिश करो

उपयोग करने के लिए पर्याप्त सरल लगता है ... यह उपयुक्त के माध्यम से भी उपलब्ध है।

मैं कुछ इस तरह की तलाश कर रहा था इससे पहले कि मैंने अपनी कुंजियों को कॉपी किया, लेकिन जब से मुझे हर जगह मेरी कुंजी मिल गई है मुझे वैसे भी पहले से ही ज़रूरत है, मैंने इसे आज़माने के लिए समय नहीं लिया है।

यद्यपि आपके पासवर्ड की दृश्यता के बारे में उस ट्यूटोरियल के अस्वीकरण पर ध्यान दें।


हर किसी को जो ऐसा करने की आवश्यकता है:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

आपका बहुत स्वागत है। जबकि मैं यहां के बाकी लोगों से सहमत हूं कि सार्वजनिक-कुंजी-प्रमाणीकरण इस मामले का सबसे अच्छा समाधान है, कभी-कभी वैकल्पिक तरीकों की आवश्यकता होती है, इसलिए जब तक हम विकल्प का उपयोग करते समय व्यापार-बंद के बारे में जानते हैं।
मिग्स

वास्तव में ... लेकिन इसीलिए इसे ओपन सोर्स राइट कहा जाता है? एकाधिक जायके ... एक ही परिणाम!
सोरिन-मिहाई

1
धन्यवाद कि आप केवल यह नहीं कह रहे हैं कि पासवर्ड खराब हैं, उनका उपयोग न करें, OLDDD विरासत उपकरणों में से कुछ पर हमें नए उपकरण आने तक बस इनकी आवश्यकता है :)
थियोडोर हॉवेल

7

आपके समाधान पर एक भिन्नता जो सुरक्षा खतरों के लिए अधिक सुरक्षित है, अपने पासवर्ड को तंग अनुमतियों वाली फ़ाइल में संग्रहीत करना और -fध्वज का उपयोग करना है shpass:

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

अंतर यह है कि चल रही प्रक्रियाओं को सूचीबद्ध करने से कमांड लाइन में आपका पासवर्ड नहीं दिखाई देगा, यह अब केवल उस फ़ाइल को पथ दिखाएगा जिसमें आपका पासवर्ड है।


यह उत्तर स्वीकृत उत्तर से बेहतर है।
vietnguyen09

1

मैं किसी भी स्थिति की कल्पना नहीं कर सकता, जहाँ पासफ़्रेज़ के बिना सार्वजनिक-कुंजी प्रमाणीकरण ऑटमेटेड ssh / rsync लॉगिन के लिए बेहतर समाधान नहीं होगा।

वैसे भी expectजो आप करना चाहते हैं उसे हासिल करने का एक तरीका होना चाहिए। आप ssh के लिए पासवर्ड को पाइप नहीं कर सकते, लेकिन यह बहुत समान है। ऐसा कैसे किया जाता है, इसका जवाब यहां स्टैकओवरफ्लो में दिया गया है


सुझाव के लिए धन्यवाद, लेकिन मैं वास्तव में बहुत अधिक सरल sshpass पाया!
सोरिन-मिहाई

1

मैंने पाया कि sshpass काम करता है, लेकिन चूंकि टर्मिनल कहता है कि SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':आपको इसे कुछ इस तरह से चलाने की आवश्यकता है:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

जहाँ -Pनिर्दिष्ट करता है कि मैं देखने के लिए कौन सा संकेत देता हूं, जो चल रहा है sshpass -vऔर जो वाक्यांश passwordवहां नहीं है , उसकी तलाश करके पता चला ।


0

पहली बात यह है passowrd/bypassकि आप पासवर्ड लॉगिन के बिना ssh करते हैं, जैसा कि यू देख सकते हैं कि हम ssh-copy-id -i ./ssh/id_rsa.pubमशीन को लक्षित कर सकते हैं ।

कि परीक्षण के बाद मशीन पासवर्ड के बिना, तो rsync में जिस तरह से निश्चित रूप से अगले में स्थानीय मशीन से पर ssh से दूर किया जा सकता है target/serverमशीन

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