سؤال كيف يمكنني الخروج من ssh عندما تغلق؟


أنا في كثير من الأحيان ssh في مربع بلدي في المنزل من المدرسة ، ولكن عادة عندما أقوم بتغيير الفئات وتعليق جهاز الكمبيوتر الخاص بي ، سيتم كسر الأنبوب. ومع ذلك ، ببساطة قفل ssh - السيطرة+ج، السيطرة+ض و السيطرة+د ليس لها أي تأثير.

من المزعج أن تضطر إلى إعادة تشغيل الجهاز الخاص بي ، بل ومن المزعج أكثر أن تضطر إلى إغلاق نافذة شاشة جديدة وإعادة إنشائها.

لذلك سؤالي ، هل هناك طريقة سهلة لجعل ssh يموت بشكل صحيح (أي عندما يفشل أنبوب "عادة" فإنه سيتم الخروج برسالة حول أنبوب مكسورة)؟ أو لا بد لي من معرفة ما هو PID وقتل يدويا؟


343
2018-03-11 16:22


الأصل


إذا تم قطع الاتصال بجلسة SSH نشطة ، فإنه يتجمد. أنا فقط أقتله وأبدأ جلسة جديدة. لا يتم فقد أية معلومات لأنني استخدم شاشة جنو. - Lekensteyn
أنا أيضا - الشاشة هي الأفضل. لكن ما زال من المزعج أن تضطر إلى ذلك screen -x : P - Wayne Werner
[mosh] (mosh.mit.edu) هو بديل أنيق لتجنب هذه المشكلة. إنها "تبقى متصلة" حتى مع اتصال الإنترنت المتقطع. - jaynp
@ jaynp عيب لي باستخدام mosh (منذ دقيقتين) هو أنني لا أعرف كيفية فصله. أنا أستخدم جلسة tmux + irssi على مضيف بعيد (كحارس IRC ، نوع من) وأريد أن أقطع الاتصال في بعض الأحيان (مع الاحتفاظ بـ tmux + irssi قيد التشغيل) وأنني فعلت مع <enter> + ~ +. باستخدام SSH ولكن لن تعمل باستخدام mosh. - Pavel Šimerda


الأجوبة:


يتم إعادة توجيه المفاتيح العادية عبر ssh جلسة ، لذلك أي من هؤلاء سوف تعمل. بدلاً من ذلك ، استخدم تسلسلات الهروب. لقتل الدورة الحالية ضرب في وقت لاحق أدخل ↵، ~، ..

يمكن سرد المزيد من تسلسلات الهروب هذه أدخل ↵، ~، ؟:

Supported escape sequences:
  ~.  - terminate session
  ~B  - send a BREAK to the remote system
  ~R  - Request rekey (SSH protocol 2 only)
  ~#  - list forwarded connections
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

يمكنك إغلاق قائمة تسلسلات الهروب عن طريق ضرب أدخل.

لاحظ ذلك لأنه يضرب ~~ الأسباب ssh لإرسال ~ بدلا من اعتراضها ، يمكنك معالجة N متداخلة ssh اتصالات عن طريق ضرب ~  N مرات. (هذا ينطبق فقط على ~الصورة التي تتبع مباشرة أدخلهذا يعني ذلك أدخل~~~~~. ينهي ssh جلسة 5 طبقات عميق ويحافظ على 4 أخرى سليمة.


478
2018-03-11 17:18



لتخطيطات لوحة المفاتيح حيث ~ هو مفتاح ميتتسلسل المفتاح هو Enter  ~  Space  .. - Søren Løvborg
لدي وأضاف المزيد من تسلسلات الهروب التي قد تكون مفيدة. :) - gertvdijk
لاحظ أنك تحتاج إلى إلغاء حذف الخط EscapeChar ~ في /etc/ssh/ssh_config (أو ~/.ssh/ssh_config إذا كنت تفضل). - Aditya M P
Hitechcomputergeek Enter  ~  ~  . منذ ~  ~ يرسل حرفية ~ من خلال جلسة SSH الخاصة بك ، فإن جلسة SSH الثانية سوف تحصل عليها كترجمة واحدة وسوف تفسر . كجزء من الهروب. للإرسال إلى جلسة ssh الخامسة المتداخلة ، فقط استخدم 5 tildes في تسلسل هروبك. - Score_Under
الحياة تتغير ؛) - artm


قد ترغب أيضًا في إعداد مستوى التطبيق ، alives الاحتفاظ ل SSH ل يحول دون من التجميد على قضايا الاتصال. لي ~/.ssh/config يحتوي على هذا:

Host *
ServerAliveInterval 15
# ServerAliveCountMax 3

هذا يجعل العميل ssh keep-enives على مستوى التطبيق كل 15 ثانية. كلما فشل ثلاثة منهم على التوالي (الافتراضي ServerAliveCountMax) ، يعتبر العميل الاتصال معلقة ويغلقه.

يعارض الخيار الآخر TCPKeepAlive، يتم التحقق من ذلك داخل القناة المشفرة وليس غير مدلل.


جدير بالذكر أن أولئك الذين يبقون على قيد الحياة يساعدون أيضًا على الإبقاء عليها منذ فترة طويلة تسكع الاتصالات على قيد الحياة ، أي تمنعك من التعرض نصف مغلقة جلسات برنامج التعاون الفني معلقة لساعات يمسها.

أنا أوصي بتشغيل هذه الميزة إذا واجهت هذا بشكل منتظم ، ولكن يجب أن تعرف أيضًا عن المخاطر الأمنية الطفيفة التي قد تفرضها. ا هجوم عادي واضح قد يصبح أسهل إذا كان المهاجم يعرف الفاصل الزمني ومحتويات اتصال خاملاً. قد يكون هذا هو السبب وراء عدم تمكينه بشكل افتراضي.


51
2018-03-11 18:51



أسباب أمنية. يمكنك أن تشرب وتترك ssh sessio مفتوحا وشريك مختبرك الذي عملت معه خلال العشرين سنة الماضية قد يستخدم جلستك لخطف الخادم وتدميره ... بينما كنت تشرب في استراحة لمدة 10 دقائق. - Luis Alvarado♦
تضمين التغريدة وكيف يمكن إيقاف تشغيل الخيار الافتراضي يمنعك من امتلاك شركاء مختبرات غير عادل؟ %) - ulidtko
ulidtko: هل هناك أي سبب لعدم الإعداد ServerAliveInterval إلى 1 بحيث يتم الكشف عن اتصال مفقود على الفور؟ - krlmlr
لدي تحسين المنصب مع معرفتي بها مع "إصلاحات" أخرى. أعتقد أن الأمر ليس كذلك ال الإجابة على السؤال كما هو أكثر حول منع بدلاً من إصلاح واحد مكسورة بالفعل. - gertvdijk
gertvdijk: شكرًا لك. بالنسبة لي ، يعمل حتى من دون Host خط. أيضًا ، "الأصفار الحديثة مثل Advanced Encryption Standard ليست عرضة حاليًا لهجمات واضحة المعالم". (من الرابط الذي أضفته) ... - krlmlr


كما لوحظ في الإجابة geekosaur ، تسلسل الهروب ~. سيتم إنهاء الاتصال.

يمكن عرض قائمة كاملة من تسلسلات الهروب وماذا تفعل عن طريق الكتابة ~?:

Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

39
2018-03-15 06:39



كيف أغلق قائمة تسلسلات الهروب؟ - kristianp
لا تقوم بعد طباعة قائمة تسلسل الهروب ، وهي جاهزة لقبول القائمة التالية. - Tejas Kale