سؤال كيفية إعادة الاتصال إلى جلسة ssh غير متصلة


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


141
2018-06-04 13:04


الأصل


لا أستطيع أن أصدق لا أحد ذكر mosh.mit.edu - jwbensley
javano: لم يسبق لي أن سمعت بها. أضف ذلك كإجابة! - kbyrd
kbyrd فعلت؛) - jwbensley
تم طرح سؤال مماثل في unix.stackexchange.com/questions/105001/... مع بعض التلميحات حول كيفية العمل حول قطع الاتصال في المقام الأول ... - anarcat


الأجوبة:


تحديث: للحصول على إجابة فعلية ، اطلع على إجابة zero_r أدناه

هذه ليست إجابة ، ولكن الحل. استعمال شاشة.

عند تسجيل الدخول لأول مرة ، قم بتشغيل الشاشة. يمكنك الحصول على قذيفة أخرى ، وتشغيل الأوامر في ذلك. إذا كنت غير متصل ، فستبقى عملية الشاشة المحطة الطرفية على قيد الحياة بحيث لا تقع صدفة الخاص بك والعمليات التي تقوم بتشغيلها. عند إعادة الاتصال ، قم بتشغيل 'screen -r' للاستئناف.

هناك مجموعة أكثر لتكوين الشاشة واستخدامها ، ولكن ما سبق يجب أن يعمل على حل مشكلتك.


126
2018-06-04 13:08



أو استخدم tmux - شاشة "برودة" ، لقد استخدمت وكلاهما يفضل tmux لأنه يمكنك تقسيم المصطلح بشكل جيد. - John Hunt
كنت سعيدا لإيجاد screen تم تثبيت بالفعل على بلدي أوبونتو 12.x حتى إذا كنت غير متأكد من مجرد محاولة هذا الأمر ، فإنه إعادة الاتصال واستئناف تفعل إطلاق سراح الترقية عملية: sudo شاشة -Dr - bjm88
@ bjm88، sudo يجب استخدامها فقط في حالة بدء جلسة الشاشة الأصلية باستخدام sudo. وإلا فسوف يعود كما لو لم توجد جلسة شاشة: There is no screen to be detached - Noam Manos


حاول تعيين ClientAliveInterval (مثل 60) و TCPKeepAlive (نعم أو لا) للقيم المناسبة على serverse sshd.conf.

هذا من شأنه أن يبقي جلستك على قيد الحياة حتى في حالة فقد الاتصال للدقائق.


118
2018-06-04 13:08



حتى الآن ، يبدو أنك الشخص الوحيد الذي يجيب على السؤال بدلاً من اقتراح الشاشة كحل بديل. - kbyrd
دعوة جيدة. لقد وجدنا هذه الطريقة مفيدة بشكل خاص عند عبور الجدران النارية سيسكو ASA / PIX ، والتي تحب بشكل افتراضي لإيقاف اتصالات TCP. - Mike Pountney
ربما هذا ليس هو المكان المناسب لطرحه ، ولكن هل من الممكن أن يقوم الملصق بتبديل الإجابات؟ يجب أن نجيب على "الشاشة" (ليس أفضل ما لدي ، أنا أحب مايك باونتني ، لكنني حصلت على مندوب) بهذه المعلومات. - kbyrd
هل سيتم فقدان هذا العمل عند الاتصال عبر اتصال Cisco VPN ، واتصال VPN؟ - Brent
بالنسبة لي شاشة تعمل بشكل مثالي ، يمكنني إعادة الاتصال بفحص المهمة و countiune للعمل - integratorIT


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

'man screen"هو صديقك كالمعتاد ، ويجب استدعاء حزمة نظام التشغيل"screen"إذا لم يتم تثبيته بشكل افتراضي.

الأساسيات هي:

  • بدء جلسة شاشة (على المضيف البعيد):

    $ screen
    
  • قطع الاتصال من جلسة الشاشة الخاصة بك: CTRL-A، د

  • أعد الاتصال بجلسة الشاشة الخاصة بك بعد تسجيل الدخول مرة أخرى:

    $ screen -d -r
    
  • افتح نافذة أخرى "نافذة": CTRL-A، ج

  • التنقل من خلال نوافذ الشاشة المفتوحة: CTRL-A، الفراغ

يوجد الكثير من الاشياء الرائعة التي يمكنك القيام بها مع الشاشة. لقد كنت استخدمه لأكثر من 10 سنوات ، وما زلت أعرف ميزات جديدة. انها فائدة يونيكس المفضلة.


59
2018-06-04 13:19



نعم ، هذه إجابة أفضل بكثير من جوابي. - kbyrd
هل ما زال بإمكاني الاتصال بجلسة ssh غير المتصلة ، إذا قمت بإعادة تشغيل جهاز الكمبيوتر الخاص بي حيث يتم تشغيل الشاشة؟ - BarathVutukuri


لا أستطيع أن أصدق لا أحد ذكر MOSH.

Mosh هو بروتوكول منفصل يمكن أن يربط عملية تسجيل الدخول إلى SSH ، فإنه يبقي جلسة العمل الخاصة بك على قيد الحياة بعد أيام من انقطاع الاتصال ، وتغيير الملكية الفكرية ، الكمون عالية وهلم جرا. يتم شرحه على الصفحة الرئيسية بشكل أفضل مما أستطيع شرحه لذلك قمت بنسخ الوصف أدناه. تجربتي ومشورتاتي هي أنني استخدمها على جهازي الأندرويد ، فهي منقذ للحياة عند السفر و SSH'ing. وينطبق الشيء نفسه على الكمبيوتر المحمول الخاص بي عند ربطه بالجوال على متن القطار على سبيل المثال. أوصي تجميع من مصدر للحصول على أحدث إصدار ، نسخة repo بالنسبة لي داخل أوبونتو لديه بعض الإزعاج في ذلك والتي تم إصلاحها في الإصدار الأحدث (في وقت كتابة هذا التقرير).

موش (قذيفة متحركة)

تطبيق المحطة الطرفية عن بعد الذي يسمح التجوال ، ويدعم متقطعة   الاتصال ، ويوفر صدى المحلية الذكية وتحرير خط   ضغطات المستخدم.

موش هو بديل ل SSH. إنها أكثر قوة واستجابة ،   خاصة عبر شبكة Wi-Fi والوصلات الخلوية والمسافات البعيدة.

Mosh هو برنامج مجاني ، متوفر لـ GNU / Linux و FreeBSD و Solaris و Mac   OS X ، و Android.

ميزات من الموقع:

  • تغيير IP. ابق على اتصال: Mosh يتجول تلقائيا وأنت تتحرك بين اتصالات الإنترنت. استخدم Wi-Fi في القطار ، Ethernet في والفندق ، وشبكة LTE على الشاطئ: ستظل في وضع تسجيل الدخول. معظم الشبكات تفقد البرامج اتصالاتها بعد التجوال ، بما في ذلك SSH وويب تطبيقات مثل Gmail. موش مختلف.

  • يجعل لأحلام سعيدة: مع Mosh ، يمكنك وضع جهاز الكمبيوتر المحمول الخاص بك للنوم وإيقاظه في وقت لاحق ، والحفاظ على جهاز الكمبيوتر الخاص بك اتصال سليمة. إذا سقط اتصال الإنترنت الخاص بك ، سوف يحذرك Mosh - ولكن استئناف الاتصال عندما تعود خدمة الشبكة.

  • تخلص من تأخر الشبكة: SSH ينتظر رد الخادم قبل أن يعرض لك الكتابة الخاصة بك. يمكن أن يجعل ل واجهة المستخدم رديء. موش مختلف: إنه يعطي استجابة فورية للكتابة ، حذف وتحرير الخط. يقوم بذلك بشكل تكيفي ويعمل حتى في وضع ملء الشاشة برامج مثل emacs و vim. على اتصال سيئ ، يتم وضع خط تحت التوقعات البارزة لذلك لن تضلل

  • لا يوجد كود مميز. لا خفي: لست بحاجة إلى أن تكون المستخدم المتميز لتثبيت أو تشغيل Mosh. العميل والخادم تشغيل الملفات التنفيذية من قبل مستخدم عادي واستمر فقط لحياة الاتصال.

  • طريقة تسجيل الدخول نفسها: لا يستمع موش على منافذ الشبكة أو يصادق المستخدمين. عميل mosh يسجل الدخول إلى الخادم عبر SSH ، ويقدم المستخدمون نفس بيانات الاعتماد (على سبيل المثال ، كلمة المرور ، المفتاح العام) كما كان من قبل. ثم يدير Mosh mosh-server عن بعد ويربط به عبر UDP.

  • يدير داخل المحطة الخاصة بك ، ولكن على نحو أفضل: Mosh هو برنامج سطر الأوامر ، مثل ssh. يمكنك استخدامه داخل xterm ، gnome-terminal ، urxvt أو Terminal.app أو iTerm أو emacs أو الشاشة أو tmux. ولكن تم تصميم mosh من الصفر ويدعم مجموعة أحرف واحدة فقط: UTF-8. يصلح البق يونيكود في المحطات الطرفية الأخرى و في SSH.

  • Control-C يعمل بشكل رائع: على عكس SSH ، يعالج بروتوكول mosh المستند إلى UDP فقدان الحزمة بأمان ، ويضبط الإطار معدل على أساس شروط الشبكة. لا يملأ Mosh مخازن الشبكة ، لذا Control-C
    يعمل دائما لوقف عملية هارب.


41
2017-11-24 13:01



Mosh ليس ssh المجمع - وهو بروتوكول مختلف ، لا علاقة له تقريبا ssh (يستخدم فقط ssh لتسجيل الدخول). - jch
+1 صحيح جدا ، خطأي. - jwbensley
ماذا عن الأمن يا رجل في الوسط؟ التشفير؟ تبادل المفتاح؟ - Nasir Iqbal


autossh يراقب اتصالك وإذا انخفض ، فإنه يعيد الاتصال. هو أكثر موثوقية من keepalives. إذا اتصلت بجلسة شاشة ، فستستمر في الاتصال من المكان الذي قطعت الاتصال به (انظر rscreen التي تأتي مع autossh)


19
2018-06-06 09:11



خارج حالة التهيئة القابلة للتكوين ، لا يسمح لك في النهاية بإعادة الاتصال بجلسة (ما كان يبحث عنه البروتوكول الاختياري). ولكن يمكن أن يكون autossh مفيدًا جدًا للتطبيقات التي تتطلب أنفاق ssh وتخطيط المنافذ وما إلى ذلك. - ives
نعم سوف autossh + الشاشة يكون البقعة الحلوة. autossh ديه rscreen لهذا. - hayalci
Autossh أفضل من mosh. لقد استعملت - Sridhar-Sarnobat
إليك مشاركة مدونة بواسطة Jesse Keating ، حول الاستخدام autossh مع الشاشة. - sampablokuper


فما استقاموا لكم فاستقيموا تثبيت وبدء الشاشة لإصلاح مشكلتك. ستتيح لك الشاشة إعادة الاتصال بجلسة شاشة سابقة.

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

بالنسبة للمبتدئين ، إذا تم قطع الاتصال بك ، فيمكنك استخدامه

screen -ls

لعرض جلساتك و

screen -r ${session} 

لإعادة الاتصال إلى واحد غير متصل.


9
2018-06-04 13:06





tmux

هذا واحد هو كلاسيكي. استخدمه عندما تتعرض لخطر فقدان الاتصال بالطرف.

$ tmux
$ sh do_something_that_takes_forever

!! Connection fails so you reconnect once you notice

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0

تمامًا مثل هذا ، تعود إلى العمل.


9
2018-04-06 01:24



شكرا للطن! كنت أبحث عن كيفية القيام بذلك مع tmux ، حيث يبدو أن ما يعتبره معظم الناس هو الخيار الأفضل. - CoolOppo


كما أشار آخرون ، فإن الشاشة هي أفضل حل لهذا ، كما أنها تضيف مجموعة من الميزات المفيدة الأخرى أيضًا.

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

نرى http://tlug.dnho.net/؟q=node/239 (أو ابحث في Google عن العديد من الأمثلة الأخرى أظن طرقًا مختلفة قليلاً).


3
2018-06-04 13:47



نص لطيف في هذا الرابط ، شكرًا! - palehorse


بديل أكثر حداثة للشاشة ، للأسف غير متوفر لبعض أنواع "المحاكاة الافتراضية" (على سبيل المثال في cygwin يمكن أن يكون لديك "شاشة" ، ولكن ليس "tmux" بسبب الطريقة التي تم تصميمها بها) ، ولكن أينما كان لديك خيار تثبيت tmux ، أوصيك بشدة بالذهاب لذلك المثوى من الشاشة.


2
2018-03-23 11:44





وهنا حل آخر غير الشاشة.

علبة المعجون تسمح لك أن تفعل ذلك فقط ، فقد إعادة الاتصال على خيار قطع ليس في العادية أو المعجون نانوغرام

https://puttytray.goeswhere.com/

انها شوكة من المعجون مع خيارات أخرى ، انتقل إلى إعدادات الاتصال وهناك خيارات 2 ، واحد ل "محاولة لإعادة الاتصال على فشل الاتصال" ، و "محاولة لإعادة الاتصال عند بدء التشغيل".


2
2018-01-20 10:08



EHH. هل يأتي مع keylogger وأداة exkiltration PPK التلقائي ، بأي فرصة؟ - Deer Hunter
أفترض أنك تسأل إذا كانت بطريقة ما تسرق بياناتك ، إنها مصدر مفتوح تمامًا ، رمز المصدر متاح على github إذا كنت تريد أن تبدو github.com/FauxFaux/PuTTYTray هناك عدد غير قليل من المساهمين :) - munkiepus
هتافات كبيرة :) - munkiepus