गैर-इंटरैक्टिव एसएसएच सत्र
यदि आपको दूरस्थ सर्वर पर एक संवादात्मक सत्र की आवश्यकता नहीं है, तो आप 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
काम करता है!