Write Failed: broken pipe
ত্রুটি রোধ করতে ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রে এসএসএইচ কনফিগার করতে আমি কী করতে পারি ? এটি প্রায়শই ঘটে যদি আপনি নিজের ক্লায়েন্ট কম্পিউটারটি ঘুমেন এবং পরে আবার চালু করেন।
screen
?
Write Failed: broken pipe
ত্রুটি রোধ করতে ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রে এসএসএইচ কনফিগার করতে আমি কী করতে পারি ? এটি প্রায়শই ঘটে যদি আপনি নিজের ক্লায়েন্ট কম্পিউটারটি ঘুমেন এবং পরে আবার চালু করেন।
screen
?
উত্তর:
/etc/ssh/ssh_config
লিনাক্স এবং ম্যাকের জন্য আমি এটি চেষ্টা করেছি :
Host *
ServerAliveInterval 120
এটি প্রায়শই, সেকেন্ডে, এটি সার্ভারে একটি রক্ষণশীল বার্তা প্রেরণ করা উচিত। যদি এটি কাজ না করে তবে আপনার কাজকর্মের সময় প্রতি দুই মিনিটে প্রবেশ করতে টিপতে কোনও বানরকে প্রশিক্ষণ দিন।
হয় আপনি স্থির করতে পারে ServerAliveInterval
মধ্যে /etc/ssh/ssh_config
ক্লায়েন্ট মেশিন বা ClientAliveInterval
মধ্যে /etc/ssh/sshd_config
সার্ভার মেশিনের। যদি আপনি এখনও ত্রুটি পেয়ে থাকেন তবে বিরতি হ্রাস করার চেষ্টা করুন।
একক ব্যবহারকারীর জন্য কনফিগারেশন ~/.ssh/config
সার্ভার এবং ক্লায়েন্ট উভয় পক্ষেই ফাইলে সেট করা যায় । ফাইলটির সঠিক অনুমতি আছে কিনা তা নিশ্চিত করুন chmod 644 ~/.ssh/config
।
Bad configuration option: ClientAliveInterval
Bad configuration option
ওএসএক্স 10.8.4 এ একই ত্রুটি পেয়েছি ।
অসংখ্য এবং সম্ভবত অনিবার্য কারণে এসএসএইচ সেশনগুলি ভেঙে যেতে পারে।
একটি দরকারী ইউটিলিটি যা এর ফলে সৃষ্ট সমস্যাগুলি হ্রাস করতে ব্যবহৃত হতে পারে তাকে ডাকা হয় screen
। স্ক্রিন একটি শক্তিশালী ইউটিলিটি যা আপনাকে একাধিক টার্মিনাল নিয়ন্ত্রণ করতে দেয় যা ssh অধিবেশন থেকে স্বাধীনভাবে বেঁচে থাকবে। উদাহরণস্বরূপ, আপনি screen
যদি কোনও ssh সেশনে চালান তবে আপনি একটি নতুন টার্মিনাল খোলা দেখতে পাবেন এবং আপনি এটি কাজ চালাতে ব্যবহার করতে পারেন। আপনার ssh অধিবেশনটি প্রক্রিয়াতে মারা যেতে দিন। screen -d
তারপরে চালানো screen -r
শেষ অধিবেশনটি আবার খুলবে এবং আপনি সেখান থেকে চালিয়ে যেতে সক্ষম হবেন। নিশ্চিত হয়ে নিন যে আপনি কিছু ডকুমেন্টেশন এটি ব্যবহার করার আগে পড়েছেন ।
screen -d -r
আপনার শেষ সেশনটি পুনরুদ্ধার করতে সুবিধার্থে চালাতে পারেন।
screen -dr
। বা screen -x
আপনি যা করার পরিকল্পনা করছেন তার উপর নির্ভর করে। মুল বক্তব্যটি হ'ল, এই সমস্ত সুইচগুলি কী করে তা আপনার জানা উচিত, যাতে উপযুক্ত ব্যক্তিগুলি ব্যবহার করতে পারেন এবং কেবল অন্ধভাবে ইন্টারনেট লোকজনের পরামর্শ অনুসরণ না করে। এখানে একটি দুর্দান্ত কমপ্যাক্ট সংক্ষিপ্তসার পাওয়া যায়: ss64.com/bash/screen.html
ক্লায়েন্ট কনফিগারেশন
ফাইলটি তৈরি করার চেষ্টা করুন:
~/.ssh/config
বিষয়বস্তু যুক্ত করুন:
Host *
ServerAliveInterval 30
ServerAliveCountMax 5
এখন আপনার সার্ভারে এসএসএস করুন এবং দেখুন আপনার সমস্যা স্থির হয়েছে কিনা। ক্লায়েন্টএলইভআইন্টারভাল বিকল্পটি কেবলমাত্র এসএসএস সার্ভার (ওরফে এসএসডি) কনফিগার করার সময় কার্যকর হয়, এটি এসএসএস ক্লায়েন্টের দিক থেকে কোনও জিনিস পরিবর্তন করে না, সুতরাং এটি উপরের কনফিগারেশন ফাইলটিতে ব্যবহার করবেন না।
পূর্ববর্তী 30 সেকেন্ডে কোনও প্যাকেট না পেয়ে (উপরে উল্লিখিত হিসাবে) এটি সার্ভারকে একটি হ্যালো-হু-ও-সিগনাল প্রেরণ করবে। তবে, যদি আপনি পর পরের সংখ্যার হ্যালো-হ'ল সিগন্যালগুলি সার্ভারআলাইভাউন্টম্যাক্সে পৌঁছে যায় তবে ssh সার্ভার থেকে সংযোগ বিচ্ছিন্ন হয়ে যাবে। এই মানটি 3 এ ডিফল্ট হয় (সুতরাং 3 * 30 = 90 সেকেন্ড সার্ভারের ক্রিয়াকলাপ ছাড়াই), এটি আপনার প্রয়োজন অনুসারে বাড়িয়ে তুলুন। .Ssh / config ফাইলটিতে আরও অনেক কনফিগার বিকল্প রয়েছে এবং আপনি পড়তে পারেন:
একটি এসএসএইচ কনফিগারেশন ফাইল ব্যবহার করা
অন্যান্য বিকল্প সম্পর্কে আরও তথ্যের জন্য। আপনি যে প্রতিটি সার্ভারের সাথে সংযোগ স্থাপন করেন যা এই উদাহরণটি ব্যবহার করবে আপনি এটি প্রয়োগ করতে চাইবেন না। অথবা কেবলমাত্র একটি নির্দিষ্ট সার্ভারের Host *
সাথে লাইনটি Host <IP>
প্রতিস্থাপন করে (কোনও আইপি ঠিকানা দ্বারা প্রতিস্থাপন করুন, ssh_config ম্যান পৃষ্ঠা দেখুন) rain
সার্ভার কনফিগারেশন
একইভাবে আপনি সার্ভারকে আপনার ক্লায়েন্টদের সাথে সৌম্য হতে বলতে পারেন। কনফিগারেশন ফাইল হয় /etc/ssh/sshd_config
।
ClientAliveInterval 20
ClientAliveCountMax 5
আপনি সেটিং দ্বারা এটি নিষ্ক্রিয় করতে পারেন ClientAliveInterval
করতে 0
বা খামচি ClientAliveInterval
এবং ClientAliveCountMax
প্রোব সাড়া ছাড়া সর্বোচ্চ SSH ক্লায়েন্ট নিষ্ক্রিয়তা সেট করতে। টিসিপিকিপলাইভের মাধ্যমে এই সেটিংসগুলির একটি সুবিধা হ'ল সিগন্যালগুলি এনক্রিপ্ট করা চ্যানেলগুলির মাধ্যমে প্রেরণ করা হয়, সুতরাং এটি স্পোফেবল হওয়ার সম্ভাবনা কম।
আমি দূরবর্তীভাবে একটি উবুন্টু সার্ভারকে লুসিড থেকে সুনির্দিষ্টভাবে আপগ্রেড করছি এবং "রাইটিং ব্যর্থ হয়েছে ock ব্রোকেন পাইপ" বার্তাটি দিয়ে আপগ্রেডের মাঝখানে ssh সংযোগটি হারিয়েছি। ক্লায়েন্টএলইভআইন্টারভাল এবং সার্ভারআলভআইন্টারভাল কিছুই করেনি। সমাধানটি হল ক্লায়েন্ট এসএস-তে টিসিপিকিপএলাইভ বিকল্পগুলি চালু করা:
TCPKeepAlive yes
মধ্যে
/etc/ssh/ssh_config
ক্লায়েন্টের জন্য, আপনার ~/.ssh/config
(বা /etc/ssh/ssh_config
) ফাইলটিকে নিম্নলিখিত হিসাবে সম্পাদনা করুন :
Host *
TCPKeepAlive yes
ServerAliveInterval 120
টিসিপিকিপএলাইভ - সুনির্দিষ্ট করে যে সিস্টেমটি অন্যদিকে টিসিপি রক্ষাকারী বার্তা প্রেরণ করবে কিনা। যদি তাদের প্রেরণ করা হয় তবে মেশিনগুলির একটির সংযোগের কারণে মারা যাওয়া বা ক্রাশটি সঠিকভাবে লক্ষ্য করা যাবে। তবে এর অর্থ হ'ল রুটটি অস্থায়ীভাবে বন্ধ হয়ে থাকলে সংযোগগুলি মারা যাবে এবং কিছু লোক এটি বিরক্তিকর বলে মনে করে (ডিফল্টটি হ'ল '')।
সার্ভারআলিভআইন্টারওয়াল - সেকেন্ডের মধ্যে একটি টাইমআউট ব্যবধান সেট করে যার পরে সার্ভার থেকে কোনও তথ্য না পাওয়া গেলে, ssh (1) এনক্রিপ্টড চ্যানেলের মাধ্যমে একটি বার্তা প্রেরণ করবে সার্ভারের কাছ থেকে প্রতিক্রিয়া অনুরোধ করার জন্য। ডিফল্ট 0 হয়, এটি বোঝায় যে এই বার্তাগুলি সার্ভারে প্রেরণ করা হবে না।
সার্ভারের জন্য, আপনার /etc/ssh/sshd_config
হিসাবে সম্পাদনা করুন :
ClientAliveInterval 600
ClientAliveCountMax 0
আপনি যদি চান ssh ক্লায়েন্টটি 10 মিনিট (600 সেকেন্ড) পরে স্বয়ংক্রিয়ভাবে প্রস্থান (টাইমআউট) প্রস্থান করতে পারে।
ক্লায়েন্টএলইভকাউন্টম্যাক্স - এটি এসএসএস ক্লায়েন্টের কাছ থেকে কোনও প্রতিক্রিয়া না পেয়ে এসএসএস সার্ভারের মাধ্যমে প্রেরিত চেকালাইভ বার্তার মোট সংখ্যা নির্দেশ করে। ডিফল্ট 3।
ক্লায়েন্টএলইভআইন্টারওয়াল - এটি সেকেন্ডের সময়সীমা নির্দেশ করে। সেকেন্ডের x সংখ্যা পরে, ssh সার্ভার ক্লায়েন্টকে প্রতিক্রিয়া চেয়ে একটি বার্তা প্রেরণ করবে। বধিরতা 0 হয় (সার্ভার ক্লায়েন্টকে চেক করতে বার্তা পাঠায় না।)
আরও দেখুন: বিকল্প কি কি করতে ServerAliveInterval
এবং ClientAliveInterval
sshd_config মধ্যে না, অবিকল?
আমি মোশকে একদম পছন্দ করি। আমি প্রায়শই একটি সার্ভারে ছিটিয়ে আছি, আমার ল্যাপটপটি বন্ধ করে একটি ক্যাফেতে যাচ্ছি, এটি খুলুন এবং এমন কিছু চালিয়ে যাবেন যেন কিছুই পরিবর্তন হয়নি।
মোশ (মোবাইল শেল)
রিমোট টার্মিনাল অ্যাপ্লিকেশন যা রোমিংয়ের অনুমতি দেয় , বিরতিযুক্ত সংযোগ সমর্থন করে এবং বুদ্ধিমান স্থানীয় প্রতিধ্বনি এবং ব্যবহারকারী কীস্ট্রোকের লাইন সম্পাদনা সরবরাহ করে।
মোশ এসএসএইচের প্রতিস্থাপন। এটি আরও দৃust় এবং প্রতিক্রিয়াশীল, বিশেষত ওয়াই-ফাই, সেলুলার এবং দীর্ঘ-দূরত্বের লিঙ্কগুলির মাধ্যমে।
মোশ একটি নিখরচায় সফ্টওয়্যার, জিএনইউ / লিনাক্স, ফ্রিবিএসডি, সোলারিস, ম্যাক ওএস এক্স এবং অ্যান্ড্রয়েডের জন্য উপলভ্য।
আমার জন্য, আমি Write failed: Broken pipe
সক্রিয়ভাবে ভিএম বা শেল প্রম্পটে টাইপ করার সময়ও পাচ্ছিলাম। আমি হয় স্থানীয়ভাবে স্থানীয়ভাবে ব্রাউজ করতে পারি না হয় কিছুক্ষণের জন্য। (আমি টার্মিনালটি ব্যবহার করে উবুন্টুর সাথে দূরবর্তীভাবে সংযোগ করছি))
আমার নেটওয়ার্কের অন্যরা নেটফ্লিক্স এবং অন্যান্য জায়গা থেকে প্রচুর ভিডিও প্রবাহিত করে। আমি এটি প্রমাণ করতে পারি না, তবে আমি এটির কোনও আইএসপি বা রাউটার সমস্যা সন্দেহ করি। উদাহরণস্বরূপ, ভেরিজন এবং নেটফ্লিক্স তাদের গ্রাহকের নেটওয়ার্ক সমস্যার জন্য একে অপরের দিকে আঙ্গুল দেখিয়ে দিচ্ছে।
যদি আপনি একটি ডায়াল-আপ সংযোগ পেয়ে থাকেন এবং একই সাথে এসএসএইচ বা টেলনেট সংযোগের সাথে ভিডিও বা সংগীত স্ট্রিম করছেন, তবে এটি কোনও সময়ে আপনাকে একটি ভাঙা পাইপ বার্তা পাবেন ev আমার আইএসপি ব্রডব্যান্ড প্যাকেজ আপগ্রেড করার ফলে আমার ভাঙ্গা সংযোগটি কম ঘন ঘন হয়ে উঠেছে।
আমার কাছে রিমোট সার্ভারে একটি স্ক্রিপ্ট রয়েছে যা এসএসএইচ কনফিগারেশন ক্লায়েন্ট বা সার্ভার নির্বিশেষে কখনই ব্যর্থ হয় না বলে মনে হয়।
#!/bin/bash
while true; do date; sleep 10; done;
এটিকে কিছু ডামি.শ ফাইলের মধ্যে সংরক্ষণ করুন এবং উইন্ডোটি ছোট করার আগে বা এখান থেকে সরে যাওয়ার আগে এটি দ্রুত চালান। এটি সার্ভারে বর্তমান সময়ের স্ট্যাম্প মুদ্রণ করতে থাকবে এবং আপনার সংযোগটি ততক্ষণ ধরে রাখবে যতক্ষণ অন্য কোনও কারণে সংযোগটি বাদ না দেওয়া হয়। আপনি যখন সেই টার্মিনালে ফিরে আসবেন, কেবল CTRL + C টিপুন এবং কাজ চালিয়ে যান।
top
চলমান ছেড়ে দিন
আমি আমার উত্তর এখানে পোস্ট করেছি, কারণ এটি উবুন্টু ভিএম নয়।
ssh -o IPQoS=throughput user@host
আপনি যখনই এসএসএসের আবেদন করবেন তখন আপনি এই আরোগুলি যুক্ত করতে পারেন: -o ServerAliveInterval=15 -o ServerAliveCountMax=3
আপনি যদি এটি করেন তবে আপনাকে / etc / ssh / * কনফিগারেশন ফাইলগুলি সম্পাদনা করতে হবে না।
এটি সহজ করার জন্য আপনি একটি বাশ ওরফে বা ফাংশন বা স্ক্রিপ্ট তৈরি করতে পারেন।
যেমন এই বাশ ফাংশনগুলি, আপনি আপনার .bashrc এ যুক্ত করতে পারেন, কিপালাইভগুলি চালু করতে do_ssh ম্যানুয়ালি ব্যবহৃত হয়। do_ssh_pty স্ক্রিপ্টগুলির মধ্যে pty সেট করতে এবং প্রম্পটগুলি এড়ানোর জন্য ব্যবহৃত হয়।
do_ssh() {
ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=3 $*
}
do_ssh_pty() {
ssh -tt -o "BatchMode=yes" -o "StrictHostKeyChecking=no" -o ServerAliveInterval=15 -o ServerAliveCountMax=3 $*
}
এখন do_ssh user@host
ব্যবহার করা যেতে পারে বা do_ssh user@host <args> <command>
কীটালাইভগুলি সক্রিয় থাকবে।