गैर-इंटरैक्टिव एसएसएच सत्र
यदि आपको दूरस्थ सर्वर पर एक संवादात्मक सत्र की आवश्यकता नहीं है, तो आप sshबिना किसी वातावरण में निष्पादित कर सकते हैं tty, उदाहरण के लिए ऑटोमेटर में एक रन शैल स्क्रिप्ट कार्रवाई के भाग के रूप में ।
आपको एक प्रोग्राम बनाने की आवश्यकता होती है, जब पासवर्ड को मानक के रूप में प्रिंट किया जाता है, उदाहरण के लिए निम्नलिखित बैश स्क्रिप्ट का उपयोग करके आपको निष्पादन योग्य बनाने की आवश्यकता होती है chmod +x pwd.sh:
#!/usr/bin/env bash
echo "password"
फिर, SSH_ASKPASSपर्यावरण चर को इस प्रोग्राम के पथ पर सेट करें , और फिर sshऑटोमेकर एक्शन में इस तरह से चलाएँ :
export SSH_ASKPASS=/Users/danielbeck/pwd.sh
ssh user@hostname ls
जब कोई नहीं है tty, लेकिन SSH_ASKPASSऔर DISPLAY(X11 के लिए, डिफ़ॉल्ट रूप से सेट) सेट किया जाता है, SSH द्वारा निर्दिष्ट प्रोग्राम को निष्पादित करता है SSH_ASKPASSऔर पासवर्ड के माध्यम से अपने आउटपुट का उपयोग करता है। इसका उद्देश्य ग्राफिकल वातावरण में उपयोग किया जाना है, ताकि एक विंडो आपके पासवर्ड के लिए पूछ सके। इस मामले में, हमने बस विंडो को छोड़ दिया, हमारे प्रोग्राम से पासवर्ड वापस किया। आप securityइसके बजाय अपने किचेन से पढ़ने के लिए उपयोग कर सकते हैं :
#!/usr/bin/env bash
security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2
ls( sshकमांड लाइन पर) वह कमांड है जिसे sshलॉग इन करने पर निष्पादित किया जाता है और इसका आउटपुट ऑटोमेटर में प्रिंट होता है। आप निश्चित रूप से, उस फ़ाइल को रीडायरेक्ट कर सकते हैं जो आपके द्वारा शुरू किए गए प्रोग्राम के आउटपुट को लॉग करने के लिए है।
उपयोग करते हुए इंटरएक्टिव एसएसएच सत्र sshpass
मैंने डाउनलोड, संकलित और स्थापित किया sshpassऔर यह पूरी तरह से काम करता है। यहाँ मैंने क्या किया है:
- Apple डेवलपर टूल प्राप्त करें
- डाउनलोड करें और खोलें
sshpass-1.05.tar.gz
- निर्देशिका के लिए एक खोल खोलें
sshpass-1.05
- Daud
./configure
- Daud
make
- भागो
make install(आपको sudoइसके लिए आवश्यकता हो सकती है)
अब प्रोग्राम को स्थापित किया गया है /usr/local/bin/sshpass। निम्नलिखित की तरह एक लाइन का उपयोग करते हुए निष्पादित करें:
sshpass -pYourPassword ssh username@hostname
आप securityऐसा करने से पहले पासवर्ड को पढ़ सकते हैं , और इसे इस तरह उपयोग कर सकते हैं:
SSHPASSWORD=$( security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2 )
sshpass -p"$SSHPASSWORD" ssh username@hostname
इसे शेल फ़ंक्शन में लपेटें और आप केवल ssh-yourhostnameकनेक्ट करने के लिए उदा टाइप कर सकते हैं, इसे पुनः प्राप्त करने और पासवर्ड को स्वचालित रूप से दर्ज करने के लिए।
STDIN is not a terminal। 2) के साथ इंटरैक्टिव सत्र के लिएsshpass,-pविकल्प स्पष्ट रूप से कुछ भी नहीं करता है। लेकिन सेटsshpassकरते समय दौड़नाSSH_ASKPASSकाम करता है!