स्क्रिप्ट में इनवाइट करने पर SSH पासवर्ड पूछता है


0

मेरे पास एक मास्टर और चार दास कंप्यूटर हैं। मैंने मास्टर पीसी पर आरएसए सार्वजनिक / निजी कुंजी उत्पन्न की। फिर मैंने पब्‍लिक की नकल की ( id_rsa.pub ) के रूप में मशीनों दास authorized_keys

जब मैं मास्टर पीसी के टर्मिनल पर इस तरह SSH आह्वान करता हूं तो यह पासवर्ड नहीं पूछता है:

ssh –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no hduser@slave1 

मैंने यह स्क्रिप्ट पासवर्ड के बिना स्वचालित रूप से दास मशीनों को लॉगिन करने के लिए लिखी थी।

SERVER_LIST=`cat /home/hduser/slaves` # slave1, slave2 ...

for host in $SERVER_LIST; do
host=hduser@$host 
ssh –t –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no $host; 
done

जब मैं इस स्क्रिप्ट का उपयोग करता हूं तो SSH दास से पासवर्ड पूछ रहा है। SSH के साथ उपयोग करने पर मुझे यह संदेश मिल रहा है -vv विकल्प:

debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/id_rsa ((nil))
debug2: key: /root/.ssh/id_dsa ((nil))
debug2: key: /root/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
hduser@slave1's password:

मैंने मास्टर पीसी और गुलाम पीसी पर अनुमतियां बदल दीं।

sudo chmod 755 /home/hduser    
sudo chmod 700 -R ~/.ssh
sudo chown hduser ~/.ssh

जब मैं टर्मिनल पर SSH आह्वान करता हूं तो यह पासवर्ड नहीं पूछता है, लेकिन यह तब भी पासवर्ड पूछ रहा है जब इसे स्क्रिप्ट में शामिल किया गया है। मैं क्या खो रहा हूँ? मेरे द्वारा यह कैसे किया जा सकता है?


1
स्क्रिप्ट किसके रूप में चल रही है? क्या उपयोगकर्ता?
Canadian Luke

लॉग का सुझाव है कि आप स्क्रिप्ट को रूट के रूप में चला रहे हैं; क्या आपने अपनी SSH कुंजियाँ id_ * जेनरेट की और उन्हें /root/.ssh पर सेव किया?
ernie

hduser इस स्क्रिप्ट को मास्टर पीसी पर रूट के रूप में चलाता है।
Eyüp Alemdar

नहीं, मैंने सार्वजनिक / निजी कुंजी नहीं बनाई थी root। मैंने उनके साथ उत्पन्न किया hduser जड़ के रूप में। यह सही ढंग से काम करता है अगर मैं मास्टर पीसी के टर्मिनल पर ssh को आमंत्रित करता हूं यह स्क्रिप्ट में काम नहीं करता है।
Eyüp Alemdar

Thk yout @ernie, यह कॉपी किए जाने के बाद काम करता है id_rsa तथा id_rsa.pub के अंतर्गत /home/hduser/.ssh/ निर्देशिका के लिए /root/.ssh/
Eyüp Alemdar

जवाबों:


0

SSH लॉग दिखाता है कि लॉगिन सत्र क्रेडेंशियल्स के लिए /root/.ssh/ में दिख रहा है, जिसका अर्थ है कि आपकी स्क्रिप्ट रूट के रूप में चल रही है।

या तो अपनी id_ * फ़ाइलों को /root/.ssh पर कॉपी करें, रूट के रूप में उपयुक्त क्रेडेंशियल्स बनाएं, या स्क्रिप्ट को उस उपयोगकर्ता के रूप में चलाएं जहां आपके पास सहेजे गए क्रेडेंशियल्स हैं।


क्या इस खोज निर्देशिका को बदलने का कोई तरीका है /root/.ssh/ सेवा मेरे /home/hduser/.ssh/?
Eyüp Alemdar

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