একটি এসএসএইচ অধিবেশনে ব্রোকেন পাইপ বার্তাটির অর্থ কী?


103

কখনও কখনও আমার এসএসএইচ সেশনটি একটি 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 

বিশেষ দ্রষ্টব্য যে কখনও কখনও "* AliveInterval" যথেষ্ট নয় stackoverflow.com/questions/10665267/...
rogerdpack

1
~/.ssh/configআমার ম্যাকের কোনও ব্যবস্থা নেই , আমাকে কি এটি তৈরি করতে হবে নাকি এটি অন্য কোথাও আছে?
AGamePlayer

5
@ অ্যাউকিউরুইগুও হ্যাঁ, আপনার ~/.sshপ্রথমে ডিরেক্টরিটি তৈরি করা উচিত । সুতরাংmkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
গার্ট

6

একটি বিকল্প সমাধান ব্যবহার করা হবে mosh- মোবাইল শেল । Ssh এর বিপরীতে এটি ইউডিপির মাধ্যমে সংযোগ স্থাপন করে এবং রোমিং সমর্থন করে। আপনি ঘরে বসে আপনার সেশনটি শুরু করতে পারবেন, আপনার ল্যাপটপটি স্থগিত করতে পারেন, এটি কাজ / বন্ধুরা / অন্য যে কোনও জায়গায় আপনার কাছে ইন্টারনেট রয়েছে, আপনার ল্যাপটপটিকে সসপেন্ড করুন এবং এমন কিছু চালিয়ে যেতে পারেন যেন কিছুই ঘটেছিল। এটি বিশেষত কার্যকর যদি আপনি কোনও লসি ইন্টারনেট সংযোগে থাকেন: এটি যদি আপনার কীস্ট্রোকগুলি সার্ভারে না পৌঁছে এবং অবিচ্ছিন্নভাবে সংযোগটি পুনরায় স্থাপন করার চেষ্টা করে তবে তা তাত্ক্ষণিক প্রতিক্রিয়া দেখায়।

ইনস্টলেশন ও সেটআপ সহজ: এটি এখন সমস্ত বর্তমান লিনাক্স (প্লাস কয়েকটি অ-লিনাক্স) বিতরণে অন্তর্ভুক্ত এবং এটি পূর্ববর্তী ssh সংযোগের মাধ্যমে সেশন সূচনা এবং প্রমাণীকরণের সমন্বয় সাধন করে। সুতরাং আপনি যদি আপনার মাধ্যমে সংযোগ স্থাপন ssh user@serverকরতে সক্ষম হন mosh user@serverতবে মোশির সাথে প্যাকেজগুলি উভয় প্রান্তে ইনস্টল করা থাকলে কেবল কল করেই মোশির সাথে সংযোগ স্থাপন করতে সক্ষম হবেন ।

সংযোগ ব্যর্থতার মূল কারণ হ'ল মোশকে কাজ করতে আপনাকে ইউডিপি পোর্টে সার্ভারে পৌঁছাতে হবে (ডিফল্ট পরিসর: 60000-61000)। সুতরাং সার্ভার যদি কোনও ফায়ারওয়ালের পিছনে থাকে তবে আপনি নিজের ভাগ্যের ছিদ্রগুলি খোঁচা দিতে না পারলে আপনি বেশিরভাগ ভাগ্যের বাইরে থাকেন ( সুরক্ষা সম্পর্কিত )।


3

আপনি যদি আরও দীর্ঘ সংযোগ সময়কাল চান, ক্লায়েন্টে যোগ করুন:

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

ServerAliveCountMaxডিফল্টরূপে এটি 3 এ সেট করা আছে Therefore সুতরাং একবার ServerAliveIntervalআপনার সার্ভারে 3 টি ছোট প্যাক তথ্য প্রেরণ করার পরে এটি স্বয়ংক্রিয়ভাবে লগ আউট হয়ে যাবে। এটিকে 1200 এ সেট করার অর্থ এই প্রক্রিয়াটি কমপক্ষে 1200 বার ঘটতে হবে। সংক্ষেপে আপনার কমপক্ষে 30 * 1200 সেকেন্ড (10 ঘন্টা) সংযুক্ত হওয়া উচিত।


5
যে ফাইলটি বর্তমান ব্যবহারকারীর অন্তর্গত বা এখনও বিদ্যমান নেই তার জন্য কেন sudo ব্যবহার করবেন?
হুবার্ট গ্রেজস্কোয়িয়াক

2

এর অর্থ সাধারণত আপনার নেটওয়ার্ক (টিসিপি) সংযোগটি পুনরায় সেট করা হয়েছিল। যেমন আপনার ইন্টারনেট সরবরাহকারী আপনাকে বা এই জাতীয় কিছুটিকে পুনরায় সংযুক্ত করেছে।


1

আমারও একই সমস্যা ছিল তবে এটি আশানুরূপ নয়। যদি আপনি দেখতে পান যে একই নেটওয়ার্কে অন্য সার্ভার একই আইপি ঠিকানার জন্য চেষ্টা করছে, আপনি একই সমস্যার মুখোমুখি হবেন। এটি সমাধান করার জন্য আপনাকে পরীক্ষা করতে হবে এমন কোনও সার্ভার রয়েছে যা আপনার একই আইপি ঠিকানা ব্যবহার করে। 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. একই আইপি পিং করুন অন্য কোনও মেশিন সেই আইপি ব্যবহার করছে কিনা তা দেখতে

আপনার নেটওয়ার্কে কোন মেশিন রয়েছে তা সন্ধানের জন্য আপনি এই ইউনিক্স এবং লিনাক্স প্রশ্ন শিরোনামটি ব্যবহার করতে পারেন: অন্যান্য নেটওয়ার্কগুলি কীভাবে স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত রয়েছে তা কীভাবে খুঁজে পাবেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.