Sshd_config- র সার্ভারএলাইভআইন্টারওয়াল এবং `ক্লায়েন্টএলইভআইন্টারওয়াল What ঠিক কী করে?


161

আমি দেখেছি এই প্রশ্নের , কিন্তু আমি দুঃখিত আমি বেশ দুটি ভেরিয়েবল সেটিংস বুঝতে পারছি না আছি ServerAliveIntervalএবং ClientAliveIntervalগৃহীত প্রতিক্রিয়া উল্লেখ করেছে। যদি আমার স্থানীয় সার্ভারটির সময়সীমা শেষ হয় তবে আমি কি এই মানটি শূন্যে সেট করব? তাহলে কি আর কখনই সময় বের হবে না? আমি পরিবর্তে এটি 300 সেকেন্ড বা কিছুতে সেট করা উচিত?

আমার প্রশ্নটি হ'ল, আমার কিছু সংযোগ সময় শেষ হয়ে যায় যখন আমি স্থগিত করি & তারপরে আমার ল্যাপটপটিকে সাড়া না দিয়ে Write failed: Broken pipeএবং কিছু না দেয়। আমি কীভাবে কোনও স্থানীয় এসএসডি সঠিকভাবে কনফিগার করতে পারি যাতে তারা একটি ভাঙা পাইপের সাহায্যে ব্যর্থ না হয়?

উত্তর:


202

সার্ভারআলভইন্টারওয়াল : সার্ভারে নাল প্যাকেট প্রেরণের আগে ক্লায়েন্ট অপেক্ষা করবে এমন সেকেন্ডের সংখ্যা (সংযোগটি টিকিয়ে রাখতে)।

ক্লায়েন্টএলাইভ ইন্টারভালওয়াল : ক্লায়েন্টের কাছে নাল প্যাকেট প্রেরণের আগে সার্ভারটি অপেক্ষা করবে এমন সংখ্যার (সংযোগটি টিকিয়ে রাখতে)।

0 এর মান নির্ধারণ (ডিফল্ট) এই বৈশিষ্ট্যগুলিকে অক্ষম করবে যাতে আপনার সংযোগটি যদি এটি দীর্ঘ সময়ের জন্য অলস থাকে তবে ড্রপ হতে পারে।

সার্ভারআলাইভআইন্টারওয়াল কোনও সংযোগটি টিকিয়ে রাখার সবচেয়ে সাধারণ কৌশল বলে মনে হয়। ভাঙা পাইপ সমস্যা রোধ করতে, আমি আমার .ssh / কনফিগারেশন ফাইলে যে ssh কনফিগারটি ব্যবহার করি তা এখানে:

Host myhostshortcut
     HostName myhost.com
     User barthelemy
     ServerAliveInterval 60
     ServerAliveCountMax 10

উপরের সেটিংটি নিম্নলিখিত উপায়ে কাজ করবে,

  1. ক্লায়েন্টটি 60 সেকেন্ডের জন্য অলস অপেক্ষা করবে (সার্ভারআলাইভআইন্টারভাল সময়) এবং, সার্ভারে একটি "নো-অপশন নাল প্যাকেট" প্রেরণ করবে এবং প্রতিক্রিয়া আশা করবে। যদি কোনও প্রতিক্রিয়া না আসে, তবে এটি উপরের প্রক্রিয়াটি 10 ​​(সার্ভারআলিভকাউন্টম্যাক্স) বার (600 সেকেন্ড) পর্যন্ত চালিয়ে যেতে থাকবে। যদি সার্ভারটি এখনও সাড়া না দেয় তবে ক্লায়েন্টটি ssh সংযোগটি সংযোগ বিচ্ছিন্ন করে।

সার্ভারের পাশে ক্লায়েন্টএলইভকাউন্টম্যাক্স সাহায্য করতে পারে। সংযোগ বিচ্ছিন্ন হওয়ার আগে কোনও ক্লায়েন্টকে কতক্ষণ প্রতিক্রিয়াবিহীন থাকার অনুমতি দেওয়া হয় তার সীমা এটি। ডিফল্ট মানটি তিনটি ক্লায়েন্টএলাইভআইন্টারভাল হিসাবে।


ঠিক আছে, তাই আমি "বেঁচে থাকব না" বোঝাতে শূন্য সেকেন্ডের ব্যাখ্যা করব যার কারণে এটি ক্লায়েন্ট / সার্ভারটি পোল করে না?
এম। টিবিটস

3
yup 0 = নাল প্যাকেট প্রেরণ করবেন না। অন্যরকমটি হ'ল সার্ভারআলাইভআইন্টারওয়াল ক্লায়েন্ট কনফিগারেশনে সেট করা আছে যেখানে ক্লায়েন্টএলইভআইন্টার্নাল সার্ভার কনফিগারেশনে সেট করা আছে।
বার্থলেমি

8
এটি অলসতা সৃষ্টি করার সময়সীমা রোধ করার জন্য ভাল পরামর্শের মতো বলে মনে হয় তবে ক্লায়েন্ট স্থগিত হয়ে গেলে ভাঙা পাইপ প্রতিরোধের ওপি প্রশ্নের সাথে এটি কীভাবে সম্পর্কিত তা আমি বুঝতে পারি না। ঘুমন্ত অবস্থায়, ক্লায়েন্ট কোনও নাল প্যাকেট পাঠাতে সক্ষম হবেন না, তাই নিশ্চয় এই সেটিংটি মোটা?
স্পারহক

সার্ভারএলাইভ অংশটি অবশ্যই রয়েছে। ক্লায়েন্টএলইভআইন্টারওয়াল / ক্লায়েন্টএলইভকাউন্টম্যাক্স যা এখানে সহায়তা করবে।
jawawizard

1
এই পুরানো উত্তরটির দিকে ফিরে তাকালে, আমি বিশ্বাস করি শিরোনামে থাকা প্রশ্নের উত্তর এবং দ্বিতীয় অনুচ্ছেদে প্রশ্নের উত্তর নয়, সুতরাং সার্ভারআলাইভআইন্টার্নাল সম্পর্কে মন্তব্যগুলি স্থগিতের জন্য সহায়ক নয়, যার সাথে আমি একমত। @ জোনাস উইলিকি ক্লায়েন্টলাইভআইন্টারওয়াল স্থগিতের ক্ষেত্রে খারাপ হতে পারে কারণ স্থগিত ক্লায়েন্ট সার্ভারের উত্তর দেয় না এবং ক্লায়েন্টআলভক্যান্টম্যাক্সের পরে সার্ভার ক্লায়েন্টকে সংযোগ বিচ্ছিন্ন করে দেয়।
বার্থলেমি

18

এটি sshd_configম্যানুয়ালটিতে ব্যাখ্যা করা হয়েছে ( man sshd_config):

ClientAliveInterval

সেকেন্ডে একটি টাইমআউট ব্যবধান সেট করে যার পরে ক্লায়েন্টের কাছ থেকে কোনও ডেটা না পেলে, এসএসডিডি এনক্রিপ্ট করা চ্যানেলের মাধ্যমে ক্লায়েন্টের প্রতিক্রিয়া চেয়ে একটি বার্তা প্রেরণ করবে। ডিফল্টটি 0 হয়, এটি বোঝায় যে এই বার্তাগুলি ক্লায়েন্টকে প্রেরণ করা হবে না। এই বিকল্পটি কেবল প্রোটোকল সংস্করণ 2-এ প্রযোজ্য।

ClientAliveCountMax

ডিফল্ট মান 3 হয় ClientAliveInterval(নীচে দেখুন) 15 এ সেট করা থাকলে এবং ClientAliveCountMaxডিফল্টে রেখে দেওয়া হয়, প্রতিক্রিয়াহীন এসএসএইচ ক্লায়েন্টগুলি প্রায় 45 সেকেন্ড পরে সংযোগ বিচ্ছিন্ন হয়ে যাবে। এই বিকল্পটি কেবল প্রোটোকল সংস্করণ 2-এ প্রযোজ্য।

ক্লায়েন্ট বিকল্পগুলির জন্য, ব্যাখ্যাটি এখানে দেখুন man ssh_config:

ServerAliveInterval

সেকেন্ডের মধ্যে একটি টাইমআউট ব্যবধান সেট করে যার পরে সার্ভার থেকে কোনও তথ্য না পাওয়া গেলে, sshএনক্রিপ্ট করা চ্যানেলের মাধ্যমে সার্ভারের প্রতিক্রিয়া চেয়ে একটি বার্তা প্রেরণ করবে। ডিফল্ট 0 হয়, এটি বোঝায় যে এই বার্তাগুলি সার্ভারে প্রেরণ করা হবে না। এই বিকল্পটি কেবল প্রোটোকল সংস্করণ 2-এ প্রযোজ্য।

ServerAliveCountMax

ডিফল্ট মান 3 হয়, উদাহরণস্বরূপ, ServerAliveIntervalযদি 15 এ সেট করা ServerAliveCountMaxথাকে এবং ডিফল্টে রেখে দেওয়া হয়, যদি সার্ভারটি প্রতিক্রিয়াহীন হয়ে যায়, sshপ্রায় 45 সেকেন্ড পরে সংযোগ বিচ্ছিন্ন হয়ে যায় । এই বিকল্পটি কেবল প্রোটোকল সংস্করণ 2-এ প্রযোজ্য।

উপরের ভিত্তিতে, 0 এর অর্থ এটি অক্ষম disabled সুতরাং ব্রোকন পাইপের ত্রুটি এড়াতে আপনার এই মানগুলি যথেষ্ট পরিমাণে সেট করা উচিত ।


সহায়ক পোস্ট। তবে আমি এতে হতাশ। আমি পুরো জায়গা জুড়ে বড় ব্যবধান স্থাপন করছি এবং আমার সংযোগটি মাত্র কয়েক মিনিটের পরে ভেঙে যাচ্ছে। (উবুন্টুতে
ওপেনশ

1
@ user7000, ক্লায়েন্ট (ssh) এবং সার্ভার (sshd) উভয়ই কনফিগার করুন। এটি সহায়তা করতে পারে: 'এসএসএইচ সংযোগটি অপ্রত্যাশিতভাবে দূরবর্তী প্রান্তে বন্ধ হয়ে গিয়েছিল' কীভাবে সমস্যাগুলি সমাধান করবেন
কেনারব

আমি মনে করি আমি কোথাও পাচ্ছি। এটি হতে পারে যে আমি ServerAliveIntervalআমার কনফিগার ফাইলে কোনও স্থান রাখছি না ।
শ্রীধর সারনোবাত

15

বার্থলেমির উত্তরটি দুর্দান্ত তবে সত্যিই সমস্যার মূলে যায় না। আপনি আপনার মেশিন স্থগিত করেছেন এবং আপনার কম্পিউটার বুট করার সময় এসএসএইচ সেশনটি এখনও বেঁচে থাকতে চান।

Ssh এর জন্য এমন কোনও কনফিগারেশন নেই যা সংযোগটিকে ততটা চালিয়ে রাখবে। এসএসএইচ টিসিপি ব্যবহার করে, শুরু করার জন্য আপনার তিনটি উপায় হ্যান্ডশেক দরকার এবং তারপরে কিছুটা অলস সময়ের পরে জীবিত রাখুন। আপনি যখন শাটডাউন / হাইবারনেট করবেন তখন আপনার সমস্ত টিসিপি সংযোগগুলি এফআইএন দিয়ে বন্ধ হয়ে যায়। এটি কাটিয়ে ওঠার কোনও উপায় নেই।

নোংরা কাজের জন্য আপনি সংযোগ রাখতে স্ক্রিন সহ ভিপিএস বা অন্য কোনও অনলাইন বাক্স ব্যবহার করতে পারেন। আমার পরামর্শ সুরক্ষার কারণে এটি করবেন না।


1
এটি আসলে প্রশ্নের একমাত্র এবং একমাত্র উত্তর।
ক্যালিমো

1
এটি আসলে একটি ভয়ানক সুরক্ষা সমাধান, এটি কখনই করবেন না।
jahrichie

14

যেহেতু আপনি গ্যারান্টি দিতে পারবেন না যে এসএসএইচ সংযোগটি (টিসিপি হওয়ায়) জীবিত থাকবে যখন একবার প্রান্ত প্রাপ্ত প্যাকেটে এসকে প্রেরণ বন্ধ করে দেয়, তাই আমি ব্যক্তিগতভাবে আমার সমস্ত এসএসএইচ সংযোগ পুনঃসূচনা করার জন্য http://www.harding.motd.ca/autossh/ ব্যবহার করি প্রায় যত তাড়াতাড়ি আমি আত্মসমর্পণ করা।

যেহেতু জিএনইউ স্ক্রিনটি সার্ভার সাইডে ব্যবহৃত হবে, তাই পুনরায় সংযুক্তি আমাকে যেখানে আগে ছিল সেখানে পৌঁছে দেয়।

আপনি এটি অতিরিক্ত বন্দরগুলিতে শুনতে পাচ্ছেন যাতে এটি ক্রমাগত চেক করে যে সংযোগগুলি এখনও জীবিত রয়েছে, তবে ব্যক্তিগতভাবে আমি দেখতে পাই যে এটি অক্ষমদের সাথে যথেষ্ট পরিমাণে কাজ করে এবং কেবল এসএসএইচের নিজস্ব ServerAliveInterval/ এ নির্ভর করে ServerAliveCountMax

অন্য বিকল্পটি হ'ল http://mosh.mit.edu/ যা ইউডিপি ব্যবহার করে এবং দীর্ঘমেয়াদী সংযোগের অভাব থেকে নির্বিঘ্নে পুনরুদ্ধার করে।


5

আপনি nohupযদি আপনার এসএসএইচ সংযোগ নির্বিশেষে চালাতে চান তবে আপনি কমান্ডগুলি চালাতে পারেন।

যেমন

$ nohup tar -xzf some_huge.tar.gz &

&, আমি মনে করি, প্রয়োজন হয় না, কিন্তু এটা সুবিধাজনক যেহেতু এটি ব্যাকগ্রাউন্ডে প্রক্রিয়া রান তোলে যাতে আপনি অন্যান্য উপাদান কাজ করতে পারেন।

কিছুক্ষণ সময় নেয় এমন কোনও প্রক্রিয়ার জন্য আমি সর্বদা নোহপ ব্যবহার করি, যাতে যে কোনও কারণে - বিদ্যুৎ বিভ্রাট (আমার দূরবর্তী অবস্থানে, হোস্টের কাছে স্পষ্টতই নয়), নেটওয়ার্ক আউটেজ, যাই হোক না কেন আমি সংযোগটি হারিয়ে ফেললে আমাকে আরম্ভ করতে হবে না।


Zsh এ নোট নোপআপ সঠিকভাবে কাজ করে না!
শ্রীধর সারনোবাত

@ user7000 এটি সম্পর্কে অনুচিত কি?
বাটল বুটকাস

আমার মনে নেই, আমি মনে করি ক্লায়েন্টের সংযোগ বিচ্ছিন্ন হওয়ার পরে এটি মূলত প্রক্রিয়াটি চালিত রাখেনি। এটি কয়েক বছর আগে ছিল এবং আমি নোহুপ ব্যবহার বন্ধ করে দিয়েছি এবং পরিবর্তে অস্বীকার করেছি।
শ্রীধর সারনোবাত

2
আমি অনুমান করি যে zshব্যবহারকারীদের disown -hপরিবর্তে nohupএটির সাথে থাকা উচিত , যদি না সমস্যাটি তখন থেকেই স্থির করা না হয়।
বাটল বাটকাস

0

আপনার দীর্ঘ চলমান অধিবেশনটিকে পর্দার ভিতরে রাখুন for বিশদের জন্য স্ক্রিন দেখুন h

আপনি ssh ব্যবহার করে মেশিনে পুনরায় সংযোগ করতে পারেন এবং স্ক্রিন সেশনে পুনরায় সংযোগ স্থাপন করতে পারেন


আমি অবাক হয়েছি যে পর্দার পরামর্শ দেয় এমন শতাংশের লোকেরা আসলে সেগুলি নিজেরাই ব্যবহার করে।
শ্রীধর সারনোবাত

আমি মনে করি tmux আরও ভাল পরামর্শ, কোড সংশোধনের তারিখ github.com/tmux/tmux বনাম git.savannah.gnu.org/cgit/screen.git/log দেখুন
সুহাইব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.