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


73

जब sudoदूरस्थ बॉक्स पर उपयोग करके दूरस्थ बाइनरी चलाने का प्रयास किया जाता है :

ssh remotehost "sudo ./binary"

मुझे यह त्रुटि दिखाई देती है:

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

मैं इसके आसपास कैसे काम कर सकता हूं?

EDIT यह निश्चित रूप से इस तरह सुझाए गए प्रश्न का डुप्लिकेट नहीं है। वहाँ के जवाब पूरी तरह से अप्रासंगिक हैं। वास्तव में, sudoers फ़ाइल में उन परिवर्तनों को पहले से ही दूरस्थ होस्ट पर लागू किया गया था।


जवाबों:


78

एक सरल तरीका यह निर्दिष्ट करना है -t:

ssh -t remotehost "sudo ./binary"

आदमी पृष्ठ से:

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

मैं ठीक से समझा नहीं सकता कि यह क्यों काम करता है, और एक बेहतर तरीका हो सकता है। मैं इसके बारे में सुनना चाहूँगा अगर ऐसा है तो :)

@psusi बताते हैं कि यह नीचे टिप्पणी में क्यों काम करता है।


14
यह काम करता है क्योंकि sudoपासवर्ड के लिए संकेत करने के लिए एक tty की आवश्यकता होती है, और जब आदेशों को चलाने के लिए निर्दिष्ट किया जाता है ssh, तो यह डिफ़ॉल्ट रूप से एक आवंटित नहीं करता है क्योंकि यह आमतौर पर गैर-संवादात्मक आदेश चलाने के लिए उपयोग किया जाता है जो बाइनरी डेटा को स्थानांतरित कर सकता है, जो tty तक यात्रा कर सकता है। ।
Psusi

@psusi क्या आप इस संबंधित प्रश्न का उत्तर जानते हैं? unix.stackexchange.com/questions/110841
trusktr

यह भी -ttआवश्यक है, जब heredoc
Rufus

26

सवाल:

मैं इसके आसपास कैसे काम कर सकता हूं?

sudo: no tty present and no askpass program specified

वैकल्पिक उत्तर

एक विकल्प के रूप में, कोशिश करें:

sudo -S ./binary

यह sudo को निर्देश देता है कि मानक इनपुट, स्टडिन से पासवर्ड पढ़ें।

परिदृश्य जहां यह मदद करता है

चेरोट वातावरण में, ये अन्य उत्तर सही ढंग से काम नहीं कर सकते हैं ... शायद इसलिए:

  1. / etc / छाया बनाम / etc / पासवार्ड संघर्ष उपयोगकर्ता को पासवर्ड दर्ज करने की अनुमति नहीं देता है।
  2. चिरोट-एड वातावरण में, tty1 की पहुंच थोड़ी गड़बड़ हो सकती है, और ctrl-alt f2 - to tty2 अपरिहार्य है, क्योंकि यह गैर-चेरोट-एड वातावरण का एक ट्टी है।

उदाहरण के लिए: मैन्युअल रूप से लिनक्स या बूटलोडर की स्थापना / मरम्मत करना, चुरोट वातावरण का उपयोग करना, (जैसे आर्कलिनक्स और आर्क-चेरोट)।


मुझे एक sudo मिलता है: ./binary: sudo -S ./binary चलाते समय कमांड को त्रुटि नहीं मिली, क्या देता है?
अजीत गोयल

5

आपको टर्मिनल / एप्लिकेशन को परिभाषित करना होगा जो पासवर्ड पढ़ेगा। इसके दो प्रकार हैं:

  1. export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
  2. vim /etc/sudoers (डिफॉल्ट्स विज़्प्पव)

11
क्या आपके संपादन में त्रुटि होने के कारण संभावित रूप से अपने मशीन से बाहर निकलने से बचने के लिए इसका उपयोग visudoकरना बेहतर नहीं है vim /etc/sudoers?
आकर्षित नोक

2

यह विफल हो जाता है, क्योंकि sudoरूट पासवर्ड पर संकेत देने की कोशिश की जा रही है और कोई छद्म टेट आवंटित नहीं है।

आप अपने नियमों में या तो लॉग-इन रूट के रूप में या निम्नलिखित नियमों को सेट कर सकते हैं /etc/sudoers (या sudo visudo:):

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

फिर सुनिश्चित करें कि आपका उपयोगकर्ता adminसमूह (या wheel) से संबंधित है।


जब तक यह सच नहीं है (इसके लिए कोई सबूत नहीं दिया गया है, और सेंटोस और ubuntu सिस्टम में उस कोड वाले व्यवस्थापक समूह के उपयोगकर्ता अभी भी त्रुटि प्राप्त करते हैं), यह उन समूहों के आधार पर समूह और नियम बनाने के लिए रीमोट करने के लिए एक शानदार टिप है। बढ़े हुए कार्य
MrMesees

2

आप सामग्री के साथ /etc/sudoers.d में "sudo_shutdown" जैसी फ़ाइल भी बना सकते हैं:

# Allow admins to shutdown without pass
%adm ALL=(ALL) NOPASSWD: /sbin/shutdown

यह उन उपयोगकर्ताओं को अनुमति देता है जो पासवर्ड के बिना बंद करने के लिए प्रवेश समूह में हैं।


3
आप का इरादा था संपादित इस कवर करने के लिए "कोई tty वर्तमान"
बड़ी गीक

2

मेरे मामले में मुझे यह त्रुटि मिली है क्योंकि मैं एक कमांड को निर्दिष्ट नहीं कर रहा था जिसे मैं sudoers में रूट के रूप में उपयोग करना चाहूंगा

कुछ इस तरह

/etc/sudoers.d/myuser:

myuser ALL=(root) NOPASSWD: \
    /bin/ls -la

मेरे लिए काम किया

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