এসএসএইচ অধিবেশন জীবিত রাখুন [বন্ধ]


241

আমি ssh -p8520 username@remote_hostরিমোট সার্ভার লগইন করতে ব্যবহার করি ।

ইস্যু :

এটি সর্বদা সংযুক্ত থাকে এবং আমি যখন কাজের জায়গায় থাকি তখন সঠিকভাবে কাজ করে। দুর্ভাগ্যক্রমে, আমি বাড়ি থেকে রিমোট সার্ভারের সাথে সংযুক্ত হওয়ার পরে টার্মিনালটি 10 ​​- 15 মিনিটে স্থির হয়ে যায়।

কনসোলে কোনও ত্রুটি / সময়সীমা রিপোর্ট নেই তবে কার্সার আর কোনও স্থানান্তর করতে পারে না।

wলগইন ব্যবহারকারীদের চেক করতে প্রবেশ করার সময় , কিছু জম্বি লগইন ব্যবহারকারীরা সেখানে থাকে এবং আমাকে সেগুলি নিজেই মেরে ফেলতে হয়।

এটি বেশ বিরক্তিকর। আমাকে কি কেউ সাহায্য করতে পারবেন?


আমারও এটি ছিল, আমি ব্যবহার শুরু করেছি screen। হতে পারে এটি এক ধরণের সময়োপযোগী সমস্যা।
মার্টিন

@ মার্টিন screenপ্রোগ্রামটি চালু রাখতে সহায়তা করে। দুর্ভাগ্যক্রমে মাঝে মাঝে আমাকে রিমোট সার্ভারে কাজ করতে হয় :(
হাইফেনগ জাং

আপনি যদি প্যারামিটার ছাড়াই এটি শুরু করেন তবে এটি আপনাকে শেল দেয়।
মার্টিন

আপনার কি শুধু বলছেন screen? এটি কি হারিয়ে যাওয়া সংযোগ সমস্যার সমাধান করতে পারে? না screen -S screenName? আমি সর্বদা -Sএবং-r
হাইফেনচ জাং

1
না, এটি সমস্যার সমাধান করে না, আপনি কেবল টার্মিনালে আপনার কাজটি হারাবেন না। আপনি যদি কিছু না করেন তবে এটি এখনও জমে যাবে, আপনি যেখানে শুরু করেছিলেন ঠিক সেখানেই উঠতে পারবেন। আমি বোঝাতে চাইছি আপনি একটি টার্মিনাল তৈরি করতে পারেন যা ব্যবহার করে আপনি সর্বদা পুনরায় শুরু করতে পারেন screen। আপনি এটি ইতিমধ্যে জানেন বলে মনে হয়;)
মার্টিন

উত্তর:


449

Ssh ডিমন (sshd), যা সার্ভার-সাইড চালায়, ক্লায়েন্ট চুপ করে থাকলে (যেমন, তথ্য প্রেরণ করে না) সার্ভার-সাইড থেকে সংযোগ বন্ধ করে দেয়। সংযোগ ক্ষতি রোধ করতে, এসএসএস ক্লায়েন্টকে একবারে একবারে সার্ভারে একটি সাইন-অফ-লাইফ সিগন্যাল প্রেরণের নির্দেশ দিন।

এর জন্য কনফিগারেশনটি ফাইলে রয়েছে $HOME/.ssh/config, ফাইলটি উপস্থিত না থাকলে ফাইলটি তৈরি করুন (কনফিগারেশন ফাইলটি বিশ্ব-পঠনযোগ্য নয়, সুতরাং chmod 600 ~/.ssh/configফাইলটি তৈরির পরে চালানো উচিত )। দূরবর্তী হোস্টে প্রতি উদাহরণস্বরূপ চার মিনিট (240 সেকেন্ড) সিগন্যাল প্রেরণের জন্য, নিম্নলিখিতটি কনফিগারেশন ফাইলে রাখুন:

Host remotehost
    HostName remotehost.com
    ServerAliveInterval 240

সমস্ত হোস্টের জন্য কীপ-লাইভ সিগন্যাল প্রেরণ সক্ষম করতে, নিম্নলিখিত সামগ্রীগুলি কনফিগারেশন ফাইলে রাখুন:

Host *
    ServerAliveInterval 240

24
@ ব্যবহারকারী 271996, কেন একজন ক্লায়েন্ট-সাইড সেটিংয়ের জন্য ডেমোন পুনরায় চালু করতে হবে?
ম্যাক্সচলেপজিগ

কনফিগারেশনটি কেবল ব্যবহারকারী-লিখনযোগ্য হতে হবে। পঠনযোগ্যতা উদ্বেগ নয়। আপনার অনুমতি স্তর হিসাবে 600 ব্যবহার করা ঠিক আছে কারণ এটি কেবল ব্যবহারকারী-লিখনযোগ্য।
jbruni

1
কেবলমাত্র যদি এটি স্পষ্ট না হয় তবে এই কনফিগারেশন ফাইলটি আপনার পিসি / লিনাক্স বাক্সে রয়েছে
zzapper

5
আমি কনফিগার নামটি সম্পর্কে সর্বদা বিভ্রান্ত হই: ServerAliveInterval সার্ভারটি ব্যবহার করার সময় ক্লায়েন্টটি ব্যবহার করে ClientAliveInterval । কী এলোমেলো.
youkaichao

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

170

আমি এক সময়ের সমাধান চাই:

ssh -o ServerAliveInterval=60 myname@myhost.com

এটি একটি উপাধিতে সংরক্ষণ করা হয়েছে:

alias sshprod='ssh -v -o ServerAliveInterval=60 myname@myhost.com'

এখন এই মত সংযোগ করতে পারেন:

me@MyMachine:~$ sshprod

12
এটি দুর্দান্ত, তবে ঠিক "এককালীন সমাধান" নয়। আপনি যদি একাধিকবার সার্ভারের সাথে সংযোগ স্থাপন করতে চলেছেন তবে কেন Host *& ServerAliveInterval 240(বা হোস্টনামটি নির্দিষ্ট করুন না, যদি আপনি কেবল myname@myhost.comরকমনোনি 555 এর উত্তরের জন্য চান তবে) কোনও নাম নির্ধারণ কোনওভাবেই সহজ বলে মনে হচ্ছে না।
লাম্বার্ট

8
অথবা, কেবলমাত্র আপনার ~ / .bashrc এ একটি উপকরণ তৈরি করুন:alias ssh='ssh -o ServerAliveInterval=60'
জাব্বা

15
তার অর্থ "এক সময়" যেমন "এটি কেবলমাত্র একবারে কাজ করে", "আমাকে কেবল এটি একবারে লিখতে হবে না"।
জোনাথন হার্টলি

1
হ্যাঁ, আপনি যদি "এককালের" "" একক ব্যবহার "হিসাবে পড়ে থাকেন তবে এটি পুরোপুরিভাবে কাজ করে।
ফিলরাজ

আপনি যদি একটি "ওয়ান-লাইনার" সেট ServerAliveIntervalকরতে চান তবে 60দুর্দান্ত। তবে আপনি যখন ব্যবহার করতে পারেন তখন ব্যাশ ওরফে ব্যবহার .ssh/configকরা কেবল নির্বোধ।
ক্যামেরন ট্যাকলিন্ড

50

যারা ভাবছেন তাদের জন্য, @ এডওয়ার্ড-কোস্ট

আপনি যদি সার্ভারের জন্য কীপটি জীবিত সেট করতে চান তবে এটিতে যুক্ত করুন/etc/ssh/sshd_config :

ClientAliveInterval 60
ClientAliveCountMax 2

ক্লায়েন্টএলইভ ইন্টারভালওয়াল : সেকেন্ডের মধ্যে একটি টাইমআউট ব্যবধান সেট করে যার পরে ক্লায়েন্টের কাছ থেকে কোনও তথ্য না পাওয়া গেলে, এসএসডিডি (8) ক্লায়েন্টের কাছ থেকে প্রতিক্রিয়া চেয়ে এনক্রিপ্ট করা চ্যানেলের মাধ্যমে একটি বার্তা প্রেরণ করবে।

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


দেখে মনে হচ্ছে ক্লায়েন্টএলইভআইন্টারভাল হিসাবে কোনও "প্যারামিটার" নেই, কেবল সার্ভারআলিভইন্টারওয়াল, আপনি ম্যানুয়াল পৃষ্ঠা "man ssh_config" চেক করতে পারেন
dtj

6
এটি ভুল, ক্লায়েন্ট কনফিগারেশন নয়, ssh ডিমন চালাবার সার্ভার অংশের জন্য "man sshd_config" দেখুন।
জেফ ডেভেনপোর্ট

আমি কি ClientAliveIntervalক্লায়েন্টকে জীবিত সার্ভারের চেক করতে ব্যবহার করতে পারি , বা ক্লায়েন্টকে ServerAliveIntervalবার বার "সার্চ" দিয়ে "পিং" দিতে পারি? উভয়ই বোধগম্য নয় বলে মনে হচ্ছে
qrtLs

1
কেবলমাত্র ClientAliveIntervalসার্ভারটি সেট করুন যদি আপনি চান যে সার্ভারটি কোনও প্রতিক্রিয়া না করে এমন মৃত সংযোগগুলি সংযোগ বিচ্ছিন্ন করতে পারে এবং আপনি কখন এবং কখন তা ঘটতে পারেন তা কাস্টমাইজ করতে পারেন।
জেফ ডেভেনপোর্ট


10

আমরা বিশ্বব্যাপী কনফিগারেশন অনুসরণ করে আমাদের ssh সংযোগটি বাঁচিয়ে রাখতে পারি

/etc/ssh/ssh_configফাইলটিতে নিম্নলিখিত লাইনটি যুক্ত করুন:

ServerAliveInterval 60

এটি কি কেবল ক্লায়েন্টের জন্যই কাজ করে বা এটি এসএসডি-র জন্যও কাজ করে?
এডওয়ার্ড কোস্ট

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