দাবি পরিত্যাগী
যদি আপনার এসএসএইচ সংযোগটি সংক্ষিপ্ত নেটওয়ার্ক বিভ্রাট থেকে বেঁচে না থাকে, তবে অন্য কিছু চলছে যা ssh
টিসিপি তাদের স্বাভাবিক কাজটি করতে দেয় না।
বিস্তারিত জানার জন্য নীচে দেখুন। যাই হোক:
দ্রুততম ও দুরন্ততম কোনও নির্ভরতা সমাধান
এটির মতো একটি শেল স্ক্রিপ্ট তৈরি করুন:
#!/bin/sh -
# Tune these numbers depending on how aggressively
# you want your SSH session to get reconnected.
timeout_options='-o ServerAliveInterval=4 -o ServerAliveCountMax=2'
# 255 is the status OpenSSH uses to signal SSH errors, which
# means we want to connect. All other exit statuses suggest
# an intentional exit.
status=255
# Keep opening the SSH connection and immediately dropping into
# `screen` until an intentional exit happens.
while [ "$status" = 255 ]
do
ssh $timeout_options -t "$@" screen -dR
status=$?
# You can add a `sleep` command here or a counter or whatever
# you might need as far as rate/retry limiting.
done
exit "$status"
এটি কেবল একটি বোকা-সরল লুপ চালাবে যা ssh
সংযুক্ত হওয়ার চেষ্টা করে এবং সংযুক্ত করার চেষ্টা করে screen
। হোস্ট বা অন্য যে কোনও কিছু আপনি সাধারণত ssh
কমান্ড-লাইন আর্গুমেন্ট হিসাবে আপনার অনুরোধে পাস করবেন Pass
পুনঃসংযোগটি এসএসএইচ সংযোগের সাথে একটি ত্রুটি হিসাবে রিপোর্ট করেছে কিনা তার উপর ভিত্তি করে, যার অর্থ "আপনার আক্ষরিক অর্থে ওয়াইফাই চালু হয়নি" বা যাই হোক না কেন এসএসএইচ নন ত্রুটিগুলি সনাক্ত করার জন্য এটির কোনও বুদ্ধি নেই, তবে সম্ভবত এটির জন্য কোনও তাত্পর্য নেই for আপনি.
আমি ধরে নিচ্ছি আপনার ssh-agent
বা একটি নো-পাসফ্রেজ এসএসএইচ কী যা আপনার কাছ থেকে অতিরিক্ত ইনপুট ছাড়াই পুনরায় সংযোগ স্থাপনের অনুমতি দেবে।
একটি ক্ষুদ্র জাতি অবস্থা হতে চলেছে যেখানে আপনি যদি ^C
পুনরায় সংযোগের সময় সেকেন্ডের সঠিক মানব-দুর্ভেদ্য ভগ্নাংশের সময় আঘাত করেন তবে আপনি ^C
ক্লায়েন্ট টার্মিনাল পেরিয়ে যাওয়ার পরিবর্তে স্ক্রিপ্টটি মেরে ফেলতে পারেন, সুতরাং যদি আপনার সংযোগের ঝুলন্ত সন্দেহ হয় ^C
খুব উদ্যোগীভাবে ম্যাশ করবেন না ।
সহজতম অতিরিক্ত সফ্টওয়্যার সমাধান
আপনি প্রোগ্রামটি অটোশ চেষ্টা করতে পারেন যা আপনার উবুন্টু প্যাকেজ সংগ্রহস্থলে পাওয়া উচিত।
আপনার যদি উত্স থেকে তৈরি করতে বা এটির নিরীক্ষণের প্রয়োজন হয় তবে এটি একটি একক সি প্রোগ্রাম যা কোনও অতিরিক্ত লাইব্রেরি নির্ভরতা হিসাবে সংকলন করে, উপরের আমার হ্যাকের চেয়ে সংযোগের লাইভলিভিটি চেক করার বিষয়ে আরও বুদ্ধিমান বলে মনে হয় এবং এটি কোনও সুবিধাজনক rscreen
স্ক্রিপ্ট কমান্ড দিয়ে জাহাজ করে যা স্বয়ংক্রিয় -তথ্যা screen
।
বিস্তারিত
কীভাবে ssh
স্বাভাবিকভাবে সুস্থ হয়ে ওঠে
কেবল যাচাই করার জন্য, কারণ আমি নিজের পরীক্ষা না করেই কথা বলতে পছন্দ করি না, আমি উত্তর দেওয়ার আগে কিছুটা পরীক্ষা চালিয়েছি:
আমি একটি লিনাক্স ডিভাইসের সাথে আমার ওয়াইফাইতে উঠলাম, আমার ল্যানে অন্য ডিভাইসে এসএসএইচ সংযোগ তৈরি করেছি, যাচাই করেছিলাম ssh
অন্য প্রান্তের সাথে আমার একটি ওয়ার্কিং সংযোগ ছিল (কমান্ড ইত্যাদি চালাতে পারে), তখন ক্লায়েন্টটি ওয়াইফাই সংযোগ বিচ্ছিন্ন করে (ইন্টারফেসটি সৃষ্টি করে) ডি-কনফিগার করা হবে: আর আইপি ঠিকানা নেই), এসএসএস সেশনে আরও একগুচ্ছ আরও অক্ষর টাইপ করেছেন (অবশ্যই কোনও প্রতিক্রিয়া নেই), এবং তারপরে আমার ওয়াইফাইয়ের সাথে পুনরায় সংযোগ স্থাপন করেছেন - খারাপ সংকেত এবং অন্যান্য কারণগুলির কারণে পুনঃসংযোগটি কমপক্ষে একবার ব্যর্থ হয়েছিল , তারপরে পুনরায় সংযুক্ত হয়ে: ssh
অধিবেশনটি পুনরুদ্ধার হওয়ার জন্য আমি প্রায় পাঁচ সেকেন্ড অপেক্ষা করেছিলাম , কিছুই ঘটেনি তাই আমি আরও একটি কী ssh
চাপলাম এবং অধিবেশনটি তত্ক্ষণাত পুনরায় জীবন্ত হয়ে উঠল, সংযোগের সময় আমি যে সমস্ত কীগুলি লিখেছিলাম তা কমান্ড লাইনে উপস্থিত হওয়ার সাথে সাথে।
দেখুন, ssh
টিসিপি নেটওয়ার্ক সকেটে কেবল লিখুন / পড়ুন যতক্ষণ না ওএস ওকে কিছু ভুল হয়ে যাওয়ার কথা বলে, এবং টিসিপি আসলে দীর্ঘায়িত সংযোগ ড্রপের পক্ষে খুব সহনশীল।
ডিফল্ট কার্নেল সেটিংস সহ নিজস্ব ডিভাইসগুলির বামে লিনাক্সের টিসিপি স্ট্যাকটি সংযোগটি মৃত ঘোষণার আগে এবং কোনও ত্রুটির প্রতিবেদন করার আগে লিনাক্সের টিসিপি স্ট্যাকটি বেশ কয়েক মিনিটের জন্য পুরোপুরি নিঃশব্দ হয়ে যাওয়ার বিষয়টি সহ্য করবে ssh
- এমন সময় অবশেষে আমরা বলপাড়ের সাথে কথা বলছি up ~ 30 মিনিটের মধ্যে, বা কমপক্ষে অবশ্যই এক মিনিট বা এক মিনিট দীর্ঘস্থায়ী সংযোগ হিচাপগুলিতে যথেষ্ট দীর্ঘ।
কভারগুলির নীচে, লিনাক্স টিসিপি স্ট্যাকটি ধীরে ধীরে দীর্ঘ এবং দীর্ঘতর বিলম্ব সহ বার্তাগুলি পুনরায় চেষ্টা করে, যদিও এর অর্থ হল যে আপনার সংযোগটি ফিরে আসার পরে আপনি সম্ভবত আপনার ssh
অধিবেশনটি "জীবিত" উপস্থিত হওয়ার আগে অতিরিক্ত ল্যাগের দিকে তাকিয়ে থাকবেন ।
কেন এই মাঝে মাঝে বিরতি
প্রায়শই কিছু সক্রিয়ভাবে কিছু পরে ঘনিষ্ঠ সংযোগ হয় যার ফলে উল্লেখযোগ্যভাবে খাটো পরিমাণ যে বিভিন্ন TCP স্ট্যাক সহ্য করবে চেয়ে নিষ্ক্রিয়তার সময়ের, এবং তারপর আপনার যে সংযোগ স্থিতি প্রতিবেদন করতে ব্যর্থ ssh
ক্লায়েন্ট।
সম্ভাব্য প্রার্থীদের অন্তর্ভুক্ত:
ফায়ারওয়ালস বা ন্যাট'ইং রাউটারগুলি, যা প্রতিটি লাইভ টিসিপি সংযোগ মনে রাখার জন্য মেমরি ব্যবহার করতে হয় - ডস আক্রমণগুলির বিরুদ্ধে একটি অপ্টিমাইজেশন এবং কিছু প্রশমন হিসাবে, তারা কখনও কখনও আপনার সংযোগটি ভুলে যাবে এবং তারপরে চূড়ান্তভাবে ফলস্বরূপ প্যাকেটগুলি উপেক্ষা করবে, কারণ প্যাকেটগুলি কোনও সংযোগের মাঝামাঝি যখন আপনি বিদ্যমান সংযোগটি অবৈধ দেখায় না।
আরও ভাল আচরণ করা ফায়ারওয়াল / রাউটারগুলি একটি টিসিপি আরএসটি প্যাকেট ইনজেক্ট করবে, যা সাধারণত connection reset by peer
ত্রুটি বার্তা হিসাবে প্রকাশিত হয় , তবে রিসেট প্যাকেটটি একটি আগুন-ভুলে যায়, সুতরাং যদি আপনার ক্লায়েন্টের সাথে সংযোগটি এখনও সেই মুহূর্তে সমস্যা দেখা দেয় এবং ড্রপগুলি ফেলে দেয় প্যাকেটটিও রিসেট করুন, আপনার ক্লায়েন্ট ভাবেন যে সংযোগটি এখনও বেঁচে আছে।
সার্ভারের নিজেই অপ্রত্যাশিত প্যাকেটগুলি নিঃশব্দে ফেলে দেওয়ার জন্য একটি ফায়ারওয়াল নীতি থাকতে পারে, যা যখনই সার্ভারটি সংযোগ বন্ধ হওয়ার কথা চিন্তা করে তবে ক্লায়েন্টটি না করে: ক্লায়েন্টটি সংযোগ চালিয়ে যাওয়ার চেষ্টা চালিয়ে যায় তবে সার্ভারটি ঠিক এটিকে উপেক্ষা করা হচ্ছে কারণ এই প্যাকেটগুলি সার্ভারের ফায়ারওয়াল রাজ্যের সাথে সম্পর্কিত কোনও লাইভ সংযোগ নেই।
যেহেতু আপনি লিনাক্স চালাচ্ছেন, ঠিক কীভাবে আপনি বনাম হ্রাসের অনুমতি দিচ্ছেন তার জন্য আপনার সার্ভারের iptables
/ ip6tables
(অথবা nft
আপনি যদি নতুন জিনিস ব্যবহার করছেন) সাবধানতার সাথে পরীক্ষা করে দেখুন। এটা তোলে করার অনুমতি খুব সাধারণ ব্যাপার নতুন / প্রতিষ্ঠিত / সংশ্লিষ্ট বিভিন্ন TCP, SSH পোর্টে প্যাকেট, কিন্তু না "অবৈধ" বেশী - আপনি চুপটি সবকিছু যে অনুমোদিত নয় ড্রপ করছি, এই সাধারণ সেটআপ সংক্ষিপ্ত সংযোগের সমস্যাগুলি পর স্থির এই ধরনের হতে পারে ।
আপনার এসএসএইচ সার্ভার নিজেই টিসিপি বা এসএসএইচ ক্লায়েন্ট রক্ষণশীল প্যাকেটের জন্য একটি ওপেনএসএইচ বিকল্প ব্যবহার করে, নিষ্ক্রিয়তার একটি সময় পরে সংযোগটি বন্ধ করতে কনফিগার করা যেতে পারে। নিজেই এটি অনির্দিষ্ট স্থগিতের কারণ হয়ে উঠবে না, তবে এটি আপনাকে উপরে বর্ণিত রাজ্যের একটিতে রাখতে পারে।
আপনার ssh
অধিবেশন স্থগিত হওয়ার রাজ্যে যাওয়ার পরে আপনি কেবল নিজেরাই "আনহান" করার জন্য পর্যাপ্ত সময় দিচ্ছেন না এটি সম্ভব ।
<Enter>
এবং হিট করুন এবং টাইপ করুন~.
এবং আপনি পুনরায় সংযোগ করার জন্য শেষ ssh কমান্ডটি পুনরাবৃত্তি করতে পারেন (উদাহরণস্বরূপ আপ-তীর সহ বা!!
)।