SSH कमांड के तर्क के रूप में प्रदान किए जाने पर SSH सभी टाइप किए गए पासवर्ड को दिखाता है


45

अगर मैं इसे चलाता हूं:

ssh user@server 'mysql -u user -p'

जब यह मुझसे MySQL पासवर्ड मांगता है, और मैं टाइप करना शुरू करता हूं, तो पासवर्ड स्क्रीन पर दिखाई देता है। मेरे द्वारा इसे कैसे रोका जा सकता है? अगर मैं लॉग इन करता हूं sshऔर फिर MySQL कमांड निष्पादित करता हूं , तो सब कुछ ठीक काम करता है।


5
क्या आपको नहीं लगता कि शीर्षक अस्पष्ट है .. आप कह सकते हैं कि यह सभी पाठों को दिखाता है जिसमें पासवर्ड भी दिखाई देते हैं। और ssh का मतलब यह जानना है कि आप जो टाइप कर रहे हैं वह पासवर्ड बनाम कुछ अन्य कमांड या डेटा है?
बार्लोप

@barlop मैं सुझावों के लिए खुला हूँ।
user110971

जब आप सर्वर पर एक बार कमांड निष्पादित करते हैं तो @barlop अच्छी तरह से काम करता है। मैं ssh व्यवहार बनाने के लिए किसी तरह की तलाश कर रहा हूं, जब कमांड को एक तर्क के रूप में प्रदान किया जाता है।
user110971

यह संभवतः आवश्यक नहीं है, लेकिन क्या आप कंसोल से पूरी कॉपी / पेस्ट किए गए उदाहरण को शामिल कर सकते हैं, जैसे कि केवल ssh कमांड नहीं बल्कि प्रतिक्रिया और इसके बाद आने वाला mysql प्रॉम्प्ट। आप पासवर्ड को स्विचेस में बदल सकते हैं ताकि इसे उस साइट पर न डालें जो मैं इसे फिलहाल नहीं देख सकता हूं
बार्लोप

@barlop यह वही संदेश है जिसकी आप उम्मीद करेंगे यानी ssh पासवर्ड जिसके बाद MySQL पासवर्ड प्रॉम्प्ट होगा
user110971

जवाबों:


100

यदि आप चलाने के लिए एक दूरस्थ कमांड प्रदान करते हैं, तो SSH एक tty आवंटित नहीं करता है, इसलिए दूरस्थ कमांड echo को अक्षम करने में असमर्थ है। आप एसएसएच को -tविकल्प का उपयोग करके एक ट्टी प्रदान करने के लिए मजबूर कर सकते हैं :

ssh -t user@server 'mysql -u user -p'

समतुल्य विकल्प ( -oया फ़ाइल के लिए) है RequestTTY। मैं इसे कॉन्फिग में उपयोग करने के प्रति सावधान करता हूँ क्योंकि इसमें गैर-संवादात्मक आदेशों के अवांछित प्रभाव हो सकते हैं


15
या आप उस विशिष्ट होस्ट को कॉन्फ़िगर करने के लिए हमेशा एक TTY अनुरोध करने के लिए ~ / .ssh / config संपादित कर सकते हैं। देखें RequestTTYमें man 5 ssh_config
बजे एक CVn

7
@ माइकलकॉर्जलिंग (और टोबी): शायद थोड़ी सी चेतावनी जोड़ें कि "-t" जोड़ना केवल इंटरैक्टिव उपयोग के लिए आरक्षित होना चाहिए, क्योंकि इसके दुष्प्रभाव हैं। उन दुष्प्रभावों में से कुछ पर एक अच्छे विचार के लिए: unix.stackexchange.com/a/122624/27616 ( स्टीफनचेज़लस से)
ओलिवियर

सहमत - मैं यह सुझाव देने जा रहा था कि यह शर्म की बात है कि आप रिमोट कमांड के अनुसार सेटिंग्स (जैसे कि) को जोड़ नहीं सकते (बजाय होस्ट के)।
टोबी स्पाइट ऑक्ट

28

पासवर्ड को एक संरक्षित विकल्प फ़ाइल में संग्रहीत करना

यदि आप दूरस्थ कंप्यूटर की सुरक्षा पर [*] भरोसा कर सकते हैं , तो आप पासवर्ड को एक उचित रूप से संरक्षित विकल्प फ़ाइल में संग्रहीत कर सकते हैं, जैसा कि मैनुअल के पासवर्ड सुरक्षा अध्याय के लिए एंड-यूज़र दिशानिर्देशों में सुझाव दिया गया है , बिना किसी से संवाद sshकरने या टाइप करने के लिए। पहर।

विशेष रूप से आप .my.cnfअपने होम डायरेक्टरी में फ़ाइल के [क्लाइंट] सेक्शन में एक लाइन जोड़ सकते हैं :

[client]
password=your_pass

बेशक आपको उस फ़ाइल को किसी और के लिए सुलभ होने से रोकना होगा, लेकिन फ़ाइल एक्सेस मोड को 400 या 600 के साथ सेट करके, जैसे

chmod 600 ~/.my.cnf

तब आप कुछ का उपयोग कर सकते हैं

ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'

user110971आपके खाते का उपयोगकर्ता नाम कहां है।


एक छद्म ट्टी ( ssh -t) आवंटित करने के लिए ssh को मजबूर करना

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

आप विकल्प के साथ टेटी आवंटन को बाध्य कर सकते हैं -t, (यदि आवश्यक हो तो एक से अधिक):

-t

बल छद्म tty आवंटन। इसका उपयोग रिमोट मशीन पर मनमाने ढंग से स्क्रीन-आधारित कार्यक्रमों को निष्पादित करने के लिए किया जा सकता है, जो मेनू सेवाओं को लागू करते समय बहुत उपयोगी हो सकता है। एकाधिक -tविकल्प tty आवंटन को बाध्य करते हैं, भले ही ssh के पास कोई स्थानीय tty न हो।

जैसा कि आप इस डेबियन पोस्ट (Jul_11_2008) के बारे में पढ़ सकते हैं sudo, यह एक पुराना मुद्दा है जिसे पुनरावृत्ति करना पसंद है:

ssh user@server "sudo ls"  
password: password  

और पासवर्ड आपको दिखाया गया है

समाधान के लिए ssh को एक छद्म tty आवंटित करने के लिए मजबूर करना है, -t ध्वज के साथ:

ssh -t user@server sudo ls

ध्यान दें:

[*] यदि आप फ़ाइल को केवल आपके द्वारा सुलभ फ़ाइल में छोड़ने और काम करने वाले क्लाइंटपर रूट करने के लिए भरोसा कर सकते हैं।
यदि दूरस्थ कंप्यूटर को OS को रिबूट करना या HDD को हटाना संभव है, तो कंप्यूटर को पूरी तरह से सुरक्षित नहीं माना जा सकता है ... लेकिन उस स्थिति में डेटाबेस स्वयं सुरक्षित नहीं होगा।


1
हो सकता है कि थोड़ी सी चेतावनी जोड़ें कि "-t" जोड़ना केवल इंटरैक्टिव उपयोग के लिए आरक्षित होना चाहिए, क्योंकि इसके दुष्प्रभाव हैं। उन दुष्प्रभावों में से कुछ पर एक अच्छे विचार के लिए: unix.stackexchange.com/a/122624/27616 ( स्टीफनचेज़लस से)
ओलिवियर

3

खरीद एफएस के लिए माउंट विकल्प "छिपाना" भी मूल्यवान है। यह आपके कमांडलाइन को अन्य उपयोगकर्ताओं के लिए प्रक्रिया सूची में अदृश्य बना देता है। fstab उदाहरण:

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