টার্মিনাল হ্যাং যখন হারিয়ে যাওয়া সংযোগ এবং এসএস চালু থাকে


18

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

টার্মিনাল ট্যাবটি সক্রিয় করার কোনও উপায় আছে, অর্থাত্ স্থানীয় শেল প্রক্রিয়াটি চালিয়ে যাওয়া চালিয়ে যেতে পারে?

টার্মিনাল ট্যাবটি কি একমাত্র পথ বন্ধ করে দেওয়া হচ্ছে?

উত্তর:


20

এসএসএইচ সংযোগ নির্দিষ্ট সময়সীমা ClientAliveIntervalএবং ClientAliveCountMaxপরামিতি এবং তাদের ক্লায়েন্ট-পার্শ্ব সমতুল্যতার পরে স্বয়ংক্রিয়ভাবে নেমে যায় । যদি এই সময়সীমাগুলি বেশ উচ্চ হয় তবে আপনি একটি হিমায়িত শেলটি अनुभव করতে পারবেন। তবে, আপনি যদি ব্যবহার করেন তবে আপনাকে OpenSSHসময়সাপেক্ষের জন্য অপেক্ষা করতে হবে না এবং পালানোর অক্ষর ব্যবহার করে কোনও সংযোগ বন্ধ করতে বাধ্য করতে হবে :

ESCAPE CHARACTERS
When a pseudo-terminal has been requested, ssh supports a number
of functions through the use of an escape character.  A single
tilde character can be sent as ~~ or by following the tilde by a
character other than those described below. The escape character
must always follow a newline to be interpreted as special. The
escape character can be changed in configuration files using the
EscapeChar configuration directive or on the command line by the
-e option.
The supported escapes (assuming the default ‘~’) are:

~.
    Disconnect.
(...)

যখন সংযোগ টিপতে জমে যায় ~(তার মানে Shift+ `কীগুলি একসাথে থাকে), এটি ছেড়ে দিন এবং টিপুন .। বিকল্পভাবে, আপনি যদি অস্থির সংযোগ নিয়ে কাজ করেন বা হারিয়ে যাওয়া সংযোগটি স্বয়ংক্রিয়ভাবে পুনর্নবীকরণের জন্য অটোশ ব্যবহার করতে পারেন এমন সমস্ত সময় রিমোট সার্ভারের সাথে সংযোগ স্থাপনের প্রয়োজন হয় তবে এটি খুব সুবিধাজনক।

সম্পাদনা :

যাইহোক, উভয় ClientAliveIntervalএবং যদি ServerAliveInterval0 টি সুস্পষ্টভাবে সেট করা থাকে বা স্পষ্টভাবে সেট না করা হয় এবং তারপরে sshd_configএবং ssh_configম্যান্যাপেজ অনুসারে ডিফল্টরূপে 0 তে সেট করা থাকে, নিম্নলিখিত ফাইলগুলিতে টাইমআউট সেটিংস সেট করা হয় ( http://tldp.org/HOWTO/TCP- থেকে কিপালাইভ-হাটো / ইউজারকিপ্যালাইভ এইচটিএমএল ):

  # cat /proc/sys/net/ipv4/tcp_keepalive_time
  7200

  # cat /proc/sys/net/ipv4/tcp_keepalive_intvl
  75

  # cat /proc/sys/net/ipv4/tcp_keepalive_probes
  9

  The first two parameters are expressed in seconds, and the last is
  the pure number. This means that the keepalive routines wait for
  two hours (7200 secs) before sending the first keepalive probe,
  and then resend it every 75 seconds. If no ACK response is
  received for nine consecutive times, the connection is marked as
  broken.

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


6
আমি যুক্ত করতে চাই যে এসএসই কেবল তার পালানোর চরিত্রটি প্রাথমিকভাবে বা একটি এন্টার পরে স্বীকৃতি দেয়। যখন কোনও ssh সংযোগ আটকে যায়, এন্টারটি প্রায়শই হয় তবে সর্বদা আপনি সর্বশেষে যে অক্ষরটি চাপতেন তা নয়। সুতরাং Enter ~ .সংযোগটি শেষ করে এমন ক্রম হিসাবে অভ্যস্ত হওয়া ভাল।
egmont

ধন্যবাদ। আমি কীভাবে /proc/sys/net/ipv4/tcp_keepalive*ফাইল এবং ClientAliveIntervalএবং ServerAliveInterval একসাথে কাজ করব তা এখনও পরিষ্কার নয় ? এগুলি কি একই সেটিংসের জন্য অর্থাৎ এসএসএস সংযোগটি বাঁচিয়ে রাখার জন্য? পূর্ববর্তী ফাইলগুলি কি কেবল এসএসএস সংযোগের জন্য নয়, অন্যান্য টিসিপি সংযোগগুলির জন্যও রয়েছে?
সমস্তের জন্য স্ট্যাক এক্সচেঞ্জ

অন্য একটি প্রশ্ন: কেন "যদি এই সময়সীমাগুলি বেশ উচ্চ হয় তবে আপনি একটি হিমায়িত শেলটি অনুভব করতে পারেন" " "টাইম আউটগুলি বেশ বেশি" বলতে কী বোঝ? নির্দিষ্ট সময়কালের জন্য কার্যকলাপের অভাবে যদি শেলটি সর্বদা হিমায়িত হয় না? বা আপনার অর্থ কার্যকলাপের অভাবে কিছু ক্ষেত্রে শেলটি হিমশীতল হয়ে যায় না তবে স্বয়ংক্রিয়ভাবে বেরিয়ে আসে?
সমস্ত

@ টিম: ১. /proc/sys/net/ipv4/tcp_keepalive*কেবলমাত্র ssh(d)এটির জন্য নয় তবে এটি যে ডকুমেন্টে আমি লিঙ্ক করেছি তাতে বলা হয়েছে:Remember that keepalive support, even if configured in the kernel, is not the default behavior in Linux. Programs must request keepalive control for their sockets using the setsockopt interface. There are relatively few programs implementing keepalive, but you can easily add keepalive support for most of them following the instructions explained later in this document.
আরকাদিউজ ড্র্যাবজাইক

@ টিম: ২.উচ্চ উচ্চ মানে 2 ঘন্টা উদাহরণস্বরূপ - অধিবেশনটি সংযোগ বিচ্ছিন্ন হওয়ার আগে আপনাকে 2 ঘন্টা অপেক্ষা করতে হবে। একটি পরীক্ষা করে দেখুন - রিমোট হোস্টের সাথে সংযুক্ত sshdহন, রিমোটে হত্যা করুন বা তার কেবল সরাবেন এবং হিমায়িত ssh সেশনটি নিজে থেকে বেরিয়ে আসবে কিনা তা পরীক্ষা করুন । দ্বারা frozen shellআমি গড় শেল নিষ্ক্রিয়, যেকোনো চাবি লাগবে না এবং কিছু প্রিন্ট করে না।
আরকাদিউস দ্রবকিজিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.