सवाल बैश स्क्रिप्ट में उपयोग किए गए scp कमांड को पासवर्ड कैसे पास करें? [डुप्लिकेट]


संभावित डुप्लिकेट:
एसएसएच के माध्यम से कनेक्ट करें और सार्वजनिक कुंजी का उपयोग किये बिना स्वचालित रूप से पासवर्ड टाइप करें 

मेरे पास एक बैश स्क्रिप्ट है जो डीबी का डंप बनाता है, फिर एक सर्वर से दूसरे सर्वर पर फ़ाइल कॉपी करता है लेकिन कनेक्शन से पहले हमेशा पासवर्ड मांगता है।

scp file.tar.gz root@xxx.xxx.xxx.194:/backup

क्या सीधे स्क्रिप्ट में पासवर्ड पास करने का कोई तरीका है?


38
2017-10-04 19:59


मूल


how2s.org/index.php/... - mailq
इसके अलावा, StackOverflow पर जवाब दिया - glenn jackman
serverfault.com/questions/132405/... - quanta
यह कुछ है जो मैं वास्तव में कई ऑनलाइन समुदायों से नफरत करता हूं; वे आपको बताएंगे कि आप कुछ बेवकूफ कर रहे हैं और फिर आपको जवाब नहीं देते हैं। - Lennart Rolland


जवाब:


उपकरण का प्रयोग करें sshpass

sshpass -p 'password' scp file.tar.gz root@xxx.xxx.xxx.194:/backup 

56
2017-08-02 13:52



यह ओपनएसएसएच का एक मानक हिस्सा नहीं है, और सचमुच मेरी मशीनों में से कोई भी नहीं (मैक ओएस एक्स 10.7, उबंटू 12.04, फ्रीबीएसडी 8, डेबियन 3.1) में यह है। यह प्रश्न पर प्रदान किया गया स्वीकार्य उत्तर भी है कि इसे एक डुप्लिकेट के रूप में चिह्नित किया गया है ... - voretaq7
अति उत्कृष्ट! सुरक्षा हमेशा चिंता नहीं होती है, जैसे फ़ायरवॉल के भीतर एक बॉक्स के क्रॉस-प्लेटफ़ॉर्म विकास के दौरान। Apt-get के साथ सिस्टम पर, के साथ स्थापित करें sudo apt-get install -y sshpass - Brent Faust
ठीक है, अतिरिक्त सुरक्षा जोड़ने के लिए, पर विचार करें sshpass -f file_with_password। फिर पासवर्ड फ़ाइल की अनुमतियों को सुरक्षित करें, इसे काम करें, और उसके बाद sshpass का उपयोग करने के बारे में कुछ "चालाक" सलाह पढ़ें, और अधिकृत_की बहुत अच्छी है। खासकर, जब कोई और आपको लॉगिन + पास (उदा। एसएफटीपी के लिए) देता है, और आपकी सार्वजनिक कुंजी को अधिकृत करने का कोई विकल्प नहीं है ... - Tomasz Gandor
मैं एक बार प्रॉम्प्ट से पासवर्ड पढ़ने की सलाह देता हूं read -s -p "Enter ssh password : " PASSWORD_SSH; और फिर उस sshpass वाक्यांश में उपयोग करें sshpass -p $PASSWORD_SSH scp file.tar.gz root@xxx.xxx.xxx.194:/backup - yunzen


रूट का उपयोग करने के बजाय सिर्फ इस नौकरी के लिए खाता बनाएं। पासवर्ड के बजाय पासफ्रेज़ के बिना सार्वजनिक कुंजी का उपयोग करें।

scp -i /home/backupuser/.ssh/id_rsa backupuser@xxx.xxx.xxx.194:/backup

गंतव्य सिस्टम पर बैकअप के लिए एक विशेष खाता का उपयोग करके आप अपना रूट पासवर्ड नहीं उजागर कर रहे हैं।


40
2017-10-04 20:10



रूट का उपयोग करने के बजाय फ़ाइल अपलोड के लिए एक विशिष्ट खाते के निर्माण का जिक्र करने के लिए +1। और मैं एक प्रतिबंधित खोल का उपयोग करने की भी सिफारिश करूंगा rssh इस उपयोगकर्ता के लिए। - noisebleed
प्रश्न का उत्तर नहीं देने के लिए -1। - Eric Uldall
+ नाइटपिक उत्पन्न समस्या के लिए एक और समाधान की सिफारिश करने के लिए हालांकि यह सचमुच सवाल का जवाब नहीं देता है। - Someone


लॉग इन प्रक्रिया में टेक्स्ट भेजने के तरीके को समझने की कोशिश करने के बजाय एसएसएच को इस्तेमाल किए गए कुंजी-आधारित प्रमाणीकरण के लिए सेट करना बेहतर है expect

पर एक नज़र डालें:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys

तो, मूल रूप से, भागो ssh-keygen -t dsa मशीन पर जो आपकी स्क्रिप्ट चलाएगी। जब यह आपको पासफ्रेज़ के लिए पूछता है, तो रिक्त स्वीकार करने के लिए ENTER दबाएं। आपको दो फाइलें मिलेंगी। यदि आपने डिफ़ॉल्ट सुझावों का पालन किया है, तो फ़ाइलें ~ / .ssh / id_dsa और ~ / .ssh / id_dsa.pub होगी। पहला एक निजी कुंजी है। दूसरा एक सार्वजनिक कुंजी है।

सार्वजनिक कुंजी को दूसरे सर्वर पर कॉपी करके कॉपी करें ssh-copy-id user@server2। यह सर्वर 2 पर उपयोगकर्ता की अधिकृत_की फ़ाइल में सार्वजनिक कुंजी जोड़ देगा।

अब आप पहली मशीन से एसएसएच चलाने और पासवर्ड के बिना लॉग इन करने में सक्षम होना चाहिए।

फ़ाइलों की प्रतिलिपि बनाने के लिए, एसपीपी या आरएसआईएनसी ठीक है। यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं। rsync डिफ़ॉल्ट रूप से ssh का उपयोग करेगा, इसलिए आपके द्वारा अभी सेट की गई कुंजी-आधारित प्रमाणीकरण का उपयोग करेगा।


4
2018-03-23 10:50





scp का उपयोग करता है SSH रिमोट सर्वर और फ़ाइलों को स्थानांतरित करने के लिए सुरंग करने के लिए। SSH पासवर्ड के साथ उपयोगकर्ताओं को प्रमाणित कर सकते हैं, ए SSH कुंजी या दोनों (अनुशंसित)।

पासवर्ड के बिना फ़ाइलों को स्थानांतरित करने के लिए, बनाओ SSH कुंजी उस उपयोगकर्ता के लिए जिसका आप उपयोग करने जा रहे हैं (रूट है नहीं अनुशंसित, इसके बजाय एक अप्रतिबंधित उपयोगकर्ता का उपयोग करें और विशेषाधिकार प्राप्त कार्रवाई करने के लिए रूट के रूप में लक्ष्य सर्वर पर नौकरी करें)।

फिर आपको लक्ष्य प्रणाली को कॉन्फ़िगर करने की आवश्यकता है SSH स्वीकार करने के लिए डेमॉन SSH मुख्य कनेक्शन (उपरोक्त लिंक में भी)।

ध्यान रखें कि समझौता किया गया है SSH पासवर्ड के बिना कुंजियां समझौता किए गए पासवर्ड के समान होती हैं - कोई भी अंदर आ सकता है। वास्तविक उपयोगकर्ताओं के लिए, सुरक्षा को दोगुना करना बेहतर है और कुंजी और पासवर्ड की आवश्यकता होती है।


2
2017-10-04 20:09





pscp आपको सीधे -pw तर्क का उपयोग कर पासवर्ड पास करने की अनुमति देता है। वैकल्पिक रूप से, और यह एक बेहतर विचार है, एसएसएच एजेंट का उपयोग करें और कुंजी आधारित लॉगऑन सेट करें - यह अधिक सुरक्षित है। कुंजी आधारित उपयोग करने के लिए एसएसएच स्थापित करने पर एक तरीका है पर लॉग ऑन करें यहाँ

आप इसका उपयोग कर सकते हैं हाँ कार्यक्रम में हाँ भेजने के लिए आदेश।


1
2018-03-23 10:48





तुम्हे करना चाहिए का उपयोग नहीं सुरक्षा कारणों से पासवर्ड-कम एसएसएच-कुंजी।

औज़ार keychain ssh-agent का पुन: उपयोग करने और पासवर्ड के लिए संकेत दिए बिना स्क्रिप्ट में ssh पर rsync चलाने में आपकी सहायता कर सकते हैं।

इसे उबंटू मशीन पर स्थापित करने के लिए बस निम्न आदेश चलाएं।

sudo apt-get install keychain

इसकी जाँच पड़ताल करो keychain के लिए manpage इसका उपयोग कैसे करें इसके बारे में अधिक जानकारी के लिए।


0
2018-03-23 11:02