Tshp- কীডালাইভ ssh এ কীভাবে কাজ করে?


84

আমি একটি শেল-স্ক্রিপ্ট কোড করার চেষ্টা করছি যা "হার্টবিটস" করার জন্য এসএসএস-সংযোগ ব্যবহার করে। আমি নির্দিষ্ট সময় শেষ হওয়ার পরে (সংযোগটি ড্রপ হওয়ার পরে) ক্লায়েন্ট- এবং সেই সংযোগটির সার্ভার-সাইডটি শেষ করতে চাই।

আমি এ পর্যন্ত যা খুঁজে পেয়েছি:

  • TCPKeepAlive হ্যা / কোন SSH এবং sshd কমান্ড
  • ClientAliveCountMax জন্য sshd কমান্ড
  • ClientAliveInterval জন্য sshd কমান্ড
  • ServerAliveCountMax জন্য SSH
  • ServerAliveInterval জন্য SSH

"ক্লায়েন্টএলইভকাউন্টম্যাক্স" পরিবর্তন করতে আমাকে প্রতিটি টার্গেট মেশিনে sshd_config সংশোধন করতে হবে (এই বিকল্পটি ডিফল্টরূপে অক্ষম করা আছে)।

সুতরাং আমার প্রশ্নটি হ'ল - আমি কী আমার উদ্দেশ্যে "টিসিপিকিপএলাইভ" ব্যবহার করতে পারি (উত্স / টার্গেট মেশিনে অন্য কোনও কিছুর পরিবর্তন না করে)?

লক্ষ্য অপারেটিং সিস্টেমটি এসইএলএস 11 এসপি 2 - তবে আমি এখানে প্রাসঙ্গিক বলে মনে করি না।


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

আমি কেবল নির্ধারণের জন্য একটি উপায় তৈরি করতে চাই, যদি অন্য কোনও নোড বেশ কয়েকটি শারীরিক লাইনের সাথে বেশ কয়েকটি এসএস-নেটওয়ার্ক সংযোগ ব্যবহার করে "ডাউন" হয়। আমি এটি একটি এসএস-সেশন খোলার মাধ্যমেই করি (যা কমবেশি একটি অন্তহীন লুপ করে)। আমি চাই সংযোগগুলি ভেঙে গেলে সেই অধিবেশনটি সমাপ্ত করা হোক। আমি ভাবছি টিসিপি কেপালাইভের জন্য ব্যবধান / গণনা কী।
নিলস

উত্তর:


103

আপনি সম্ভবত এটির জন্য সার্ভারআলাইভ সেটিংস ব্যবহার করতে চান। তাদের সার্ভারে কোনও কনফিগারেশন প্রয়োজন হয় না এবং আপনি যদি চান তবে কমান্ড লাইনে সেট করা যেতে পারে।

ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1 $HOST

এটি প্রতি 5 সেকেন্ডে একটি ssh কীটালাইভ বার্তা প্রেরণ করবে এবং যদি অন্য কীটালাইভ পাঠানোর সময় আসে তবে শেষেরটির একটি প্রতিক্রিয়া পাওয়া যায় নি, তবে সংযোগটি সমাপ্ত হবে।

তার মধ্যে যে স্তরটি কাজ করে তার মধ্যে ServerAliveIntervalএবং TCPKeepAliveতার মধ্যে গুরুত্বপূর্ণ পার্থক্য ।

  • TCPKeepAliveটিসিপি স্তরটিতে কাজ করে। এটি একটি খালি টিসিপি এসিকে প্যাকেট প্রেরণ করে। ফায়ারওয়ালগুলি এই প্যাকেটগুলি উপেক্ষা করার জন্য কনফিগার করা যেতে পারে, সুতরাং আপনি যদি অজানা সংযোগগুলি ড্রপ করে এমন কোনও ফায়ারওয়ালের মধ্য দিয়ে যান তবে এগুলি সংযোগটি টিকিয়ে রাখতে পারে না।
  • ServerAliveIntervalssh স্তর উপর পরিচালনা করে। এটি আসলে এসএসএসের মাধ্যমে ডেটা প্রেরণ করবে, সুতরাং টিসিপি প্যাকেটে ডেটা এনক্রিপ্ট করা আছে এবং ফায়ারওয়াল বলতে পারে না এটির কিপালাইভ, বা বৈধ প্যাকেট, তাই এই কাজগুলি আরও ভাল।

1
আমি মনে করি এটি সঠিক দিক। প্রাথমিক পরীক্ষাগুলি দেখিয়েছে যে এটি কাজ করবে - এটি সংযোগ হ্রাসের পরে সর্বশেষ 5 সেকেন্ড পরে ssh / sshd সাবপ্রসেসগুলি প্রেরণ এবং গ্রহণ বন্ধ করবে। আমি আনন্দিত যে টিসিপিকিপালাইভ কেবলমাত্র টিসিপি-স্ট্যাক-ডিফল্ট ব্যবহার করে - তাই এটি কনফিগার করাও শক্ত।
নীল

এটি ভুত ব্যবহারকারীর সমস্যাও সমাধান করে। আমি বিশ্বাস করি এটি সেটিংস | এর অধীনে 1800 এ পরিবর্তিত পটিটিওয়াই সেটিংসেও করা যেতে পারে Seconds between keepalivesসংযোগ।
বব স্টেইন

7

TCPKeepAliveবিকল্প আসলে ClientAlive মত বা ServerAlive মত অপশন থেকে জীবিত সংযোগ রাখার একটি ভিন্ন পদ্ধতি।

প্রতি বাসদ, SSH ম্যানুয়েল পৃষ্ঠা , আমরা যে পড়তে পারেন:

ক্লায়েন্ট জীবিত বার্তাগুলি এনক্রিপ্ট করা চ্যানেলের মাধ্যমে প্রেরণ করা হয় এবং তাই ছলনামাযোগ্য হবে না। টিসিপি TCPKeepAliveকিপালাইভ অপশনটি সারণযোগ্য। ক্লায়েন্ট বা সার্ভার কখন সংযোগ নিষ্ক্রিয় হয়ে গেছে তা জানার উপর নির্ভর করে যখন ক্লায়েন্ট জীবিত প্রক্রিয়া মূল্যবান।

TCPKeepAliveনিশ্চিত সিস্টেম অন্য দিকে বিভিন্ন TCP keepalive বার্তা পাঠাতে উচিত না। ডিফল্ট বিকল্পটি সর্বদা সক্ষম থাকে।

আপনি যদি ব্যবহার করেন তবে আপনি ClientAliveIntervalঅক্ষম করতে পারেন TCPKeepAlive। এই বিকল্পটি এনক্রিপ্ট করা চ্যানেলের মাধ্যমে ক্লায়েন্টের প্রতিক্রিয়ার জন্য একটি বার্তা প্রেরণ করবে (ডিফল্টটি 0, সুতরাং ক্লায়েন্টকে কোনও বার্তা প্রেরণ করা হয় না) এবং ClientAliveCountMaxsshd ক্লায়েন্টকে সংযোগ বিচ্ছিন্ন করার আগে ক্লায়েন্টকে জীবিত বার্তাগুলির সংখ্যা নির্ধারণ করে, সেশন.

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