سؤال طريقة لتجنب مهلة اتصال ssh وتجميد محطة جنوم


عندما أقوم بالتوصيل عبر ssh إلى خوادم معينة ، فإنه يتم المهلة و "تجمد" الجهاز (لا يقبل الإدخال ، لا يفصل ، لا يستطيع Ctrl-C أن يقتل عملية ssh أو أي شيء).

هذا في أوبونتو gnome-terminal على الرغم من أنه يبدو أنه يتم إيقاف الإدخال / الإخراج النهائي ، ولا يؤثر على تشغيل برنامج GNOME Terminal نفسه. حتى أقل علة مع gnome-terminal من عدم تناسق مزعج مع سه.

إذن ، هل هناك طريقة لمنع / استعادة المحطة من اتصالات ssh التي انتهت مهلتها؟


219
2018-01-20 23:33


الأصل


ممكن نسخة من كيف يمكن الحفاظ على نفق SSH مفتوح؟ - Murmel


الأجوبة:


sshd (الخادم) يغلق الاتصال إذا لم يسمع أي شيء من العميل لفترة من الوقت. يمكنك إخبار العميل بإرسال إشارة تسجيل الحياة للخادم من حين لآخر.

التكوين لهذا موجود في الملف ~/.ssh/config. لإرسال الإشارة كل أربع دقائق إلى remotehost ، ضع ما يلي في الخاص بك ~/.ssh/config.

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

هذا ما لدي في ~/.ssh/config.

لتمكينه لاستخدام جميع المضيفين:

Host *
  ServerAliveInterval 240

تأكد أيضا لتشغيل chmod 600 ~/.ssh/configنظرًا لأن ملف التهيئة يجب ألا يكون قابلاً للقراءة عالميًا.


247
2018-01-20 23:53



شكرا sblair لمساعدتي في صياغة ، انه موضع تقدير كبير. لقد غيرت "لا ينبغي" العودة إلى "يجب ألا" لأن ssh يتحقق من أذونات الملف وإذا كان العالم أو مجموعة قابلة للقراءة فإنه يفشل. - Ludwig Weinzierl
هذا ليس ما طلب OP. انه لا يحصل على ركل بسبب عدم النشاط. انه يحاول الاتصال ومحطة له هو التجميد. - Cerin
أين هذا ~/.ssh/config؟ - User
User '~ /' يمثل المجلد الرئيسي الخاص بك. ".ssh" هو مجلد داخل مجلد منزلك. - wkm
هذا لا طائل منه إذا كان يتم فقدان الاتصال الخاص بك ... - so12311


صحافة أدخل، ~، . واحد تلو الآخر لقطع الاتصال من جلسة مجمدة.

يوضح القسم "ESCAPE CHARACTERS" في صفحة ssh man التفاصيل الأساسية.


234
2018-01-20 23:44



يبدو لي هذا الجواب أكثر دقة للإجابة على السؤال ، وعلى أي حال ، كان الجواب الذي كنت أبحث عنه. - CoatedMoose
لاحظ أنك تحتاج إلى إلغاء حذف الخط EscapeChar ~ في /etc/ssh/ssh_config (أو ~/.ssh/ssh_config إذا كنت تفضل). - Aditya M P
adityamenon لا ، EscapeChar ~ هو بالفعل الافتراضي المدمج. - Peter Eisentraut
@ يسأل السؤال السؤال "هل هناك طريقة لمنع استعادة المحطة من اتصالات سه التي انتهت مهلتها"التشديد الألغام. - CoatedMoose
على الرغم من أنه كان غير صحيح في سياق السؤال ، هذا هو بالضبط ما أردت. - Subin Sebastian


حتى مع هذا ليس إجابة مباشرة لسؤالك ، فهو مرتبط بشكل كبير بالمشكلة التي تواجهها. بدلا من محاولة الحفاظ على الاتصال على قيد الحياة (جميع الاتصالات يموت في نهاية المطاف) يمكنك استخدام محطة multiplexors ، مثل screen و tmux التي تبقي الجلسة على قيد الحياة في الخلفية حتى إذا تم قطع اتصال طرفك.

أساسا عند تسجيل الدخول إلى خادم SSH تشغيلها على الفور screen والتي ستنشئ جلسة جديدة وتعلقها:

$ screen

ثم المضي قدما والقيام بعملك مع shell كما تفعل عادة. الآن إذا تم إسقاط الاتصال ، وعندما يمكنك الاتصال بالإنترنت وإعادة الاتصال بالخادم عبر SSH ، ستحصل على قائمة الجلسات الحالية مع:

$ screen -ls

لإعادة الاتصال بجلسة:

$ screen -r <session>

أين <session> هو PID أو اسم الجلسة. سيتم إعادة اتصالك بجلستك ويمكنك المتابعة من حيث توقفت!

يمكنك حتى فصل الجلسة وإعادة الاتصال من المنزل لالتقاط من النقطة الدقيقة التي توقفت عندها. لفصل الجلسة التي تستخدمها C-a تليها C-d (ل thats Control + A وثم Control + D).

يوجد برنامج تعليمي بسيط عبر الإنترنت كذلك.

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


38
2017-07-03 01:28



بديل آخر هو استخدام mosh: mosh.mit.edu - Zombies
وهذا مفيد بشكل خاص إذا كنت تستخدم نقطة اتصال أو شبكة wifi يتم إيقافها من حين لآخر. - Randall


محاولة الإلحاق -o ServerAliveInterval=30 إلى سلسلة الاتصال الخاصة بك (30 يعني 30 ثانية ويمكن بالطبع تعديلها)


11
2018-02-06 14:13





يمكنك أيضًا تعيين مهلة مهلة الخمول من جانب خادم SSH:

ملف: /etc/ssh/ssh_config

يحتوى:

ClientAliveInterval XX
ClientAliveCountMax YY

يعمل هذا بنفس طريقة إعداد العميل ، ولكن يتم إرسال الحزم الخالية من الخادم ، بدلاً من العميل.

مستخلص من:

http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


5
2018-02-12 22:45





للأشخاص الذين يرغبون في منع العميل من الخروج في المقام الأول.

يمكنك محاولة تعيين ConnectTimeout 0 في ملف التكوين. تعني القيمة 0 أن الاتصال سيتم الاحتفاظ به إلى أجل غير مسمى ما لم يتم إغلاقه.

قد يبدو ملف التكوين (أو ssh_config) كما يلي:

Host *
   ConnectTimeout 0

1
2017-12-17 02:19