2012-09-18 15 views
24

मैं एसएसएच के साथ मशीन से कनेक्ट करने की कोशिश कर रहा हूं और फिर एसएसएच के साथ एक और मशीन से कनेक्ट करने की कोशिश कर रहा हूं। लेकिन इस त्रुटि मिलती है:रिमोट कमांड निष्पादित करते समय एसएसएच त्रुटि: "stdin: tty नहीं है"

ssh [email protected] 'ssh [email protected]' 

stdin: is not a tty 
+9

पहले 'ssh' में '-t' ध्वज जोड़ने का प्रयास करें। वैसे, चूंकि आपका प्रश्न प्रोग्रामिंग से संबंधित नहीं है, इसलिए यह http://superuser.com/ – aland

+1

@aland पर अधिक उपयुक्त हो सकता है आपके पास कारण है। साथ-साथ विकल्प चलाएं। – Jhonathan

उत्तर

30

जब एक खोल में प्रवेश करने, दूरस्थ होस्ट मानता है कि कनेक्शन एक मानव उपयोगकर्ता द्वारा किया जाता है। इसलिए, यह अपेक्षा करना उचित है कि ग्राहक पर में मानक पर उनका नियंत्रण है। यही कहना है कि उपयोगकर्ता कुंजीपटल के माध्यम से टर्मिनल पर इनपुट दे रहा है। यदि रिमोट होस्ट यह पता लगाता है कि उपयोगकर्ता मानव नहीं है (क्योंकि इनपुट टर्मिनल नहीं है - लेकिन एक और प्रक्रिया है), तो यह उपयोगकर्ता को इस अप्रत्याशित स्थिति के बारे में चेतावनी दे सकता है।


पर चर्चा दुर्व्यवहार और यह कैसे से बचने के (man ssh और एक अधिक विस्तृत विवरण के लिए आयकर के लिए देखो) के एक प्रदर्शन।

$ ssh -t genja.org 'ssh raptor.lan hostname\; uptime' 
host: genja.lan 
raptor 
21:17:27 up 3 days, 15 min, 1 user, load average: 0.00, 0.00, 0.00 
Connection to genja.org closed. 

$ ssh genja.org uptime 
host: genja.lan 
21:17:43 up 12 days, 17:40, 1 user, load average: 0.30, 0.08, 0.02 

... और त्रुटि: फिर

ssh -L 4444:raptor.lan:22 genja.org 

, एक अलग टर्मिनल पर:

$ ssh genja.org 'ssh raptor.lan hostname\; uptime' 
host: genja.lan 
Permission denied (publickey,keyboard-interactive). 

आप इसके बजाय किसी सुरंग बनाने के लिए चाहते हो सकता है

ssh -p 4444 localhost will give you a conenction straight to "raptor.lan" 

आईपी पते का उपयोग करें जैसे कि 192.168.0.11 यदि DNS उपनाम रिमोट एंड पर कॉन्फ़िगर नहीं हैं।