ssh पर sudo: कोई tty मौजूद नहीं है और कोई askpass कार्यक्रम निर्दिष्ट नहीं है


15

मैं इस त्रुटि को प्राप्त कर रहा हूं और इसे ठीक करने के लिए ऑनलाइन कई तरीकों पर चर्चा कर चुका हूं और कोई भी मेरे लिए काम नहीं कर रहा है। मैं सेटअप SSH कुंजियों इसलिए जब मैं चला 'ssh newton@host.com'तो वह अपने आप मुझ में लॉग करता है, मैं भी में इस उपयोगकर्ता की स्थापना की है visudoहोना करने के लिए 'newton ALL=(ALL:ALL) ALL' मैं तो यह भी जोड़ने की कोशिश की'newton ALL=NOPASSWD: /var/www/script.sh'

दुर्भाग्य से, हर बार जब मैं ssh newton@host.com 'sudo /var/www/script.sh'साइग्विन से चलता हूं तो वापस आ जाता हूं। मैंने भी जोड़ने की कोशिश की है, -t -tलेकिन फिर यह मुझे पासवर्ड के लिए संकेत देता है।

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

यह साइगविन के लिए विशिष्ट नहीं है; मैं एक ही समस्या ssh example.com sudo echo helloको एक लिनक्स सिस्टम से दूसरे में उपयोग कर रहा हूं । मैंने तदनुसार अपना शीर्षक अपडेट किया है। मैंने यूनिक्स साइट पर माइग्रेशन के लिए आपके प्रश्न को भी ध्वजांकित किया है।
कीथ थॉम्पसन

जवाबों:


10

आपको चलाने के लिए एक टर्मिनल उपलब्ध होना चाहिए sudoताकि यह आपको पासवर्ड के लिए संकेत दे सके। यदि आप एक कमांड पास करते हैं ssh, तो यह मान लेता है कि कमांड को टर्मिनल की आवश्यकता नहीं है और जब तक आप पास नहीं करते हैं, तब तक वह एक नहीं बनाता है -tएसएसएच के अंदर एसएसएच को देखें "स्टडिन: एक ट्टी नहीं है" अधिक विस्तृत विवरण के लिए विफल रहता है

यदि आप पासवर्ड भी दर्ज नहीं कर पा रहे हैं -t, तो संभव है कि आपकी समस्या विंडोज के कारण हो। विंडोज कंसोल पूरी तरह से यूनिक्स टर्मिनल का अनुकरण नहीं करता है; इन परिस्थितियों में एक टर्मिनल को ठीक से अनुकरण करने के लिए Cygwin अनुप्रयोगों के लिए कुछ कठिनाई हो सकती है (मुझे इस बारे में निश्चित नहीं है, ध्यान दें)। यदि यह समस्या है, तो कंसोल एम 2 या मिंट्टी (साइगविन वितरण में शामिल) sshजैसे एक टर्मिनल एमुलेटर के अंदर चलाएं - विंडोज 7 में साइगविन के साथ एक शेल का उपयोग करने का सबसे अच्छा तरीका देखें ।

यदि आपने SSH पासफ़्रेज़ से अपने पासवर्ड को प्रमाणीकरण के लिए प्रतिस्थापित करने की अपेक्षा की है, तो ऐसा होने वाला नहीं है। Sudo को एक पासवर्ड की आवश्यकता होती है (जब तक कि आप NOPASSWDsudoers फ़ाइल में टैग नहीं जोड़ते )। ध्यान दें कि यदि आपको sudoers फ़ाइल में विकल्प सेट है NOPASSWD, तब भी आपके पास एक टर्मिनल होना चाहिए requiretty

यदि आप पासवर्ड रहित लॉगिन को रूट खाते तक पहुँचाना चाहते हैं (जो आमतौर पर सुरक्षा दृष्टिकोण से अच्छा विचार नहीं है), रूट खाते तक पहुँचने के लिए SSH का उपयोग करें, अधिमानतः दो हॉप्स में। एसएसएच के अंदर एसएसएच देखें "स्टडिन: एक ट्टी नहीं है" (के root@host.comलिए otheruser@computertwo.com) के साथ विफल रहता है


3

चलो आप नोडज कमांड / बाइनरी के लिए कोई पासवर्ड सक्षम नहीं करना चाहते हैं।

संशोधित करें

sudo visudo

कमांड के लिए कोई पासवर्ड सक्षम करने के लिए निम्नलिखित लाइन के साथ। पास प्रत्येक कमांड के बाद कॉमा और स्पेस के साथ कई कमांड हैं।

<user name> ALL = NOPASSWD: /usr/local/bin/node

पूर्व। sunthara ALL = NOPASSWD: /usr/local/bin/node

यहाँ छवि विवरण दर्ज करें


1

तल पर ssh- सर्वर कॉन्फ़िगरेशन फ़ाइल संपादित करें और संलग्न करें:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

काम नहीं करता है: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
किलटेक 7

परिवर्तित करने की आवश्यकता हो सकती हैMatch User newton
ILMostro_7

1
इसका मतलब यह नहीं है कि आप Userअपनी sshd फ़ाइल में नहीं लिख सकते, क्योंकि वह कॉन्फ़िगरेशन विकल्प मौजूद नहीं है। (कम से कम मेरे सिस्टम पर मामला उबंटू 16.04)
किलटेक

मैन-पेज से: "माचिस एक सशर्त ब्लॉक का परिचय देता है। यदि मैच लाइन पर सभी मानदंड संतुष्ट हैं, तो निम्न पंक्तियों के कीवर्ड कॉन्फिग फाइल के वैश्विक खंड में सेट किए गए ओवरराइड को तब तक ओवरराइड करते हैं, जब तक कि कोई अन्य मैच लाइन या अंत न हो। फ़ाइल। मिलान करने के लिए तर्क एक या एक से अधिक मापदंड-पैटर्न जोड़े हैं। उपलब्ध मानदंड उपयोगकर्ता, समूह, होस्ट और पता हैं। मैच पैटर्न में एकल प्रविष्टियों या अल्पविराम से अलग की गई सूची शामिल हो सकती है और वाइल्डकार्ड और निषेध का उपयोग कर सकते हैं। ऑपरेटर ssh_config (5) के पैटर्न में वर्णित हैं। "
ILMostro_7

मुझे Matchआपके उत्तर में एक ब्लॉक दिखाई नहीं देता ...
किल्टेक

0

मुझे इस त्रुटि का सामना करना पड़ा जब मैंने / etc / sudoers में गलती की। इस तरह से कई आदेशों को निर्दिष्ट करने के बजाय:

NOPASSWD= /bin/x, /bin/y

मैंने इस रूप में बचाया:

NOPASSWD= /bin/x /bin/y

यानी अल्पविराम के बिना। जब मैं कोशिश करता हूं तो मुझे नो ट्टी प्रेजेंट मैसेज मिलता है

ssh host 'sudo x'

0

पता नहीं है कि यह संबंधित है, लेकिन जब मेरे पास '... NOPASSWD: /xyz/script.shl' sudoers फ़ाइल में, मुझे वह त्रुटि संदेश तब तक मिला जब तक मैंने फ़ाइल #!/bin/shellnameके शीर्ष पर रेखा को शामिल नहीं किया /xyz/script.shl


0

/ etc / sudoers फ़ाइल में नीचे दिए गए मापदंडों पर टिप्पणी करने से मुझे मदद मिली।

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> निम्नानुसार मापदंडों की टिप्पणी करें

#Defaults    requiretty
#Defaults   !visiblepw
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.