SSH सत्र में ब्रोकन पाइप संदेश का क्या अर्थ है?


103

कभी-कभी मेरा SSH सत्र Write failed: Broken pipeसंदेश के साथ डिस्कनेक्ट हो जाता है । इसका क्या मतलब है? और मैं अपना सत्र कैसे खोल सकता हूं?

मुझे पता है screen, लेकिन इसका जवाब मुझे नहीं मिल रहा है। मुझे लगता है कि यह एक sshdविन्यास विकल्प है।

जवाबों:


89

यह संभव है कि आपका सर्वर उन कनेक्शनों को बंद कर दे जो बहुत लंबे समय से निष्क्रिय हैं। आप अपने क्लाइंट ( ServerAliveInterval) या अपने सर्वर ( ClientAliveInterval) को अपडेट कर सकते हैं

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

 ClientAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the client, sshd(8) will send a message
         through the encrypted channel to request a response from the
         client.  The default is 0, indicating that these messages will
         not be sent to the client.  This option applies to protocol
         version 2 only.

अपने सर्वर को अपडेट करने के लिए (और अपना पुनरारंभ करें sshd)

echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config

या ग्राहक-पक्ष:

echo "ServerAliveInterval 60" >> ~/.ssh/config 

NB कि कभी-कभी "* AliveInterval" पर्याप्त stackoverflow.com/questions/10665267/…
rogerdpack

1
~/.ssh/configमेरे मैक पर कोई नहीं है , क्या मुझे इसे वहां बनाना है या यह कहीं और है?
AGamePlayer

5
@AwQiruiGuo हाँ, आपको ~/.sshपहले निर्देशिका ( ) बनाना चाहिए । तोmkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
Gert

6

एक वैकल्पिक समाधान moshमोबाइल शेल का उपयोग करना होगा । Ssh के विपरीत यह UDP के माध्यम से जुड़ता है और रोमिंग का समर्थन करता है। आप घर पर अपना सत्र शुरू कर सकते हैं, अपने लैपटॉप को निलंबित कर सकते हैं, इसे काम पर ले जा सकते हैं / दोस्तों / जहां भी आपके पास इंटरनेट है, अपने लैपटॉप को अनसेंड कर दें और काम करना जारी रखें जैसे कि कुछ भी नहीं हुआ है। यदि आप घटिया इंटरनेट कनेक्शन पर हैं, तो यह विशेष रूप से उपयोगी है: यदि आपके कीस्ट्रोक्स सर्वर तक नहीं पहुंचते हैं और लगातार कनेक्शन को पुन: स्थापित करने की कोशिश करते हैं तो यह तुरंत प्रतिक्रिया दिखाता है।

स्थापना और सेटअप सरल है: यह अब सभी वर्तमान लिनक्स (प्लस कुछ गैर-लिनक्स) वितरण में शामिल है और यह एक पूर्व ssh कनेक्शन के माध्यम से सत्र आरंभीकरण और प्रमाणीकरण का समन्वय करता है। इसलिए यदि आप अपने माध्यम से कनेक्ट ssh user@serverकरने में सक्षम हैं mosh user@server, तो बस कॉल करके mosh के साथ कनेक्ट करने में सक्षम होने की संभावना है , यदि दोनों सिरों पर mosh पैकेज स्थापित हैं।

कनेक्शन विफलताओं का मुख्य कारण यह है कि आपको काम करने के लिए mDP के लिए UDP पोर्ट (डिफ़ॉल्ट श्रेणी: 60000-61000) पर सर्वर तक पहुंचना होगा। तो अगर सर्वर फ़ायरवॉल के पीछे है तो आप ज्यादातर भाग्य से बाहर हैं अगर इसमें छेद नहीं कर सकते हैं तो खुद ( सुरक्षा निहितार्थ )।


3

यदि आप क्लाइंट में लंबे समय तक कनेक्शन अवधि रखना चाहते हैं, तो:

echo 'ServerAliveInterval 30' | sudo tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | sudo tee -a ~/.ssh/config

ServerAliveCountMaxडिफ़ॉल्ट रूप से यह 3 पर सेट होता है। इसलिए एक बार ServerAliveIntervalजानकारी के 3 छोटे पैक आपके सर्वर पर भेजने के बाद यह स्वचालित रूप से लॉग आउट हो जाएगा। इसे 1200 पर सेट करने का मतलब है कि यह प्रक्रिया कम से कम 1200 बार घटित होगी। संक्षेप में आपको कम से कम 30 * 1200 सेकंड (10 घंटे) से जुड़ा होना चाहिए।


5
किसी फ़ाइल के लिए sudo का उपयोग क्यों करें जो या तो वर्तमान उपयोगकर्ता से संबंधित है या अभी तक मौजूद नहीं है?
ह्यूबर्ट ग्रेज्सकोविआक

2

इसका आमतौर पर मतलब है कि आपका नेटवर्क (टीसीपी) कनेक्शन रीसेट हो गया था। उदाहरण के लिए, आपके इंटरनेट प्रदाता ने आपको या कुछ इस तरह से फिर से जोड़ा है।


1

मुझे भी यही समस्या थी लेकिन यह अपेक्षा के अनुरूप नहीं है। यदि आप पाते हैं कि उसी नेटवर्क पर कोई अन्य सर्वर समान IP पते के लिए प्रयास कर रहा है, तो आपको उसी समस्या का सामना करना पड़ेगा। इसे हल करने के लिए आपको यह जांचने की आवश्यकता है कि क्या अन्य सर्वर हैं जो आपके समान आईपी पते का उपयोग करते हैं। यह arpकमांड का उपयोग करके किया जा सकता है ।

मैं डेबियन का उपयोग कर रहा हूं इसलिए यहां उन आदेशों का एक नमूना है जो मैं यह निर्धारित करने के लिए उपयोग करता हूं कि क्या कोई अन्य सर्वर वास्तव में उसी आईपी पते का उपयोग कर रहा था

apt-get install arp-scan
arp-scan -I eth0 -l | grep 192.168.1.42
  192.168.1.42 d4:eb:9a:f2:11:a1 (Unknown)
  192.168.1.42 f4:23:a4:38:b5:76 (Unknown) (DUP: 2)

आप एक ही आईपी पते का उपयोग करके मैक पते के दो सेट देखेंगे। एक दूसरे के आईपी पते को सेट करके संघर्ष से बचें।


0

"टूटे पाइप संदेश" का एक और कारण यह है कि एक अन्य मशीन आपके मेजबान के समान आईपी का उपयोग करने का प्रयास कर रही है।

यदि कोई अन्य व्यक्ति उस IP का उपयोग कर रहा है तो परीक्षण करने का एक सरल तरीका:

  1. अपने मेजबान को बंद करें
  2. उसी IP को पिंग करें यह देखने के लिए कि क्या कोई अन्य मशीन उस IP का उपयोग कर रही है

यह पता लगाने के लिए कि आपके नेटवर्क पर कौन सी मशीनें हैं, आप इस यूनिक्स और लिनक्स प्रश्न शीर्षक का उपयोग कर सकते हैं: यह कैसे पता करें कि अन्य मशीनें स्थानीय नेटवर्क से जुड़ी हुई हैं

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