कभी-कभी मेरा SSH सत्र Write failed: Broken pipe
संदेश के साथ डिस्कनेक्ट हो जाता है । इसका क्या मतलब है? और मैं अपना सत्र कैसे खोल सकता हूं?
मुझे पता है screen
, लेकिन इसका जवाब मुझे नहीं मिल रहा है। मुझे लगता है कि यह एक sshd
विन्यास विकल्प है।
कभी-कभी मेरा SSH सत्र Write failed: Broken pipe
संदेश के साथ डिस्कनेक्ट हो जाता है । इसका क्या मतलब है? और मैं अपना सत्र कैसे खोल सकता हूं?
मुझे पता है screen
, लेकिन इसका जवाब मुझे नहीं मिल रहा है। मुझे लगता है कि यह एक sshd
विन्यास विकल्प है।
जवाबों:
यह संभव है कि आपका सर्वर उन कनेक्शनों को बंद कर दे जो बहुत लंबे समय से निष्क्रिय हैं। आप अपने क्लाइंट ( 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
~/.ssh/config
मेरे मैक पर कोई नहीं है , क्या मुझे इसे वहां बनाना है या यह कहीं और है?
~/.ssh
पहले निर्देशिका ( ) बनाना चाहिए । तोmkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
एक वैकल्पिक समाधान mosh
मोबाइल शेल का उपयोग करना होगा । Ssh के विपरीत यह UDP के माध्यम से जुड़ता है और रोमिंग का समर्थन करता है। आप घर पर अपना सत्र शुरू कर सकते हैं, अपने लैपटॉप को निलंबित कर सकते हैं, इसे काम पर ले जा सकते हैं / दोस्तों / जहां भी आपके पास इंटरनेट है, अपने लैपटॉप को अनसेंड कर दें और काम करना जारी रखें जैसे कि कुछ भी नहीं हुआ है। यदि आप घटिया इंटरनेट कनेक्शन पर हैं, तो यह विशेष रूप से उपयोगी है: यदि आपके कीस्ट्रोक्स सर्वर तक नहीं पहुंचते हैं और लगातार कनेक्शन को पुन: स्थापित करने की कोशिश करते हैं तो यह तुरंत प्रतिक्रिया दिखाता है।
स्थापना और सेटअप सरल है: यह अब सभी वर्तमान लिनक्स (प्लस कुछ गैर-लिनक्स) वितरण में शामिल है और यह एक पूर्व ssh कनेक्शन के माध्यम से सत्र आरंभीकरण और प्रमाणीकरण का समन्वय करता है। इसलिए यदि आप अपने माध्यम से कनेक्ट ssh user@server
करने में सक्षम हैं mosh user@server
, तो बस कॉल करके mosh के साथ कनेक्ट करने में सक्षम होने की संभावना है , यदि दोनों सिरों पर mosh पैकेज स्थापित हैं।
कनेक्शन विफलताओं का मुख्य कारण यह है कि आपको काम करने के लिए mDP के लिए UDP पोर्ट (डिफ़ॉल्ट श्रेणी: 60000-61000) पर सर्वर तक पहुंचना होगा। तो अगर सर्वर फ़ायरवॉल के पीछे है तो आप ज्यादातर भाग्य से बाहर हैं अगर इसमें छेद नहीं कर सकते हैं तो खुद ( सुरक्षा निहितार्थ )।
यदि आप क्लाइंट में लंबे समय तक कनेक्शन अवधि रखना चाहते हैं, तो:
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 घंटे) से जुड़ा होना चाहिए।
इसका आमतौर पर मतलब है कि आपका नेटवर्क (टीसीपी) कनेक्शन रीसेट हो गया था। उदाहरण के लिए, आपके इंटरनेट प्रदाता ने आपको या कुछ इस तरह से फिर से जोड़ा है।
मुझे भी यही समस्या थी लेकिन यह अपेक्षा के अनुरूप नहीं है। यदि आप पाते हैं कि उसी नेटवर्क पर कोई अन्य सर्वर समान 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)
आप एक ही आईपी पते का उपयोग करके मैक पते के दो सेट देखेंगे। एक दूसरे के आईपी पते को सेट करके संघर्ष से बचें।
"टूटे पाइप संदेश" का एक और कारण यह है कि एक अन्य मशीन आपके मेजबान के समान आईपी का उपयोग करने का प्रयास कर रही है।
यदि कोई अन्य व्यक्ति उस IP का उपयोग कर रहा है तो परीक्षण करने का एक सरल तरीका:
यह पता लगाने के लिए कि आपके नेटवर्क पर कौन सी मशीनें हैं, आप इस यूनिक्स और लिनक्स प्रश्न शीर्षक का उपयोग कर सकते हैं: यह कैसे पता करें कि अन्य मशीनें स्थानीय नेटवर्क से जुड़ी हुई हैं ।