Ssh'nin (cygwin aracılığıyla) sunucu bağlantısının kesilmesi / zaman aşımına uğraması


2

Senaryo:

ssh user@host
# good connection, do some work...
# stop working, the server has some function where it automatically disconnects ...
# I come back to my cygwin window and it is unresponsive to ctrl + c/z and finally after maybe 2-5 minutes it comes back with the following error message:
Write failed: Connection reset by peer
MyLocalUsername@MyLocalComputer ~
$
# Now I can resume my cygwin session and reconnect.

Benim sorunum: cygwin'in sarkma şeklini beğenmedim. Kapatmaya zorlamak istemiyorum ve başka bir pencere açmak zorunda da değildim (benim için cygwin kullanmanın amacı klavyede kalmak ve pencerelere geri dönerek üretkenliği kaybetmemek. Kısacası, ctrl + c yerine çalışmak veya hiç takılmaması için.

Yanıtlar:


2

Bu benim için Windows 8'deki Cygwin64'te çalışıyor:

1) Kaçış karakterini tilde olarak ayarlamak için SSH bağlantısını -e "~" ile başlatın. Varsayılan kaçış karakter olmalı, ancak -e seçeneğini kullanana kadar benim için işe yaramadı. Görünüşe göre EscapeChar ~yönergeyi SSH Konfigürasyonunuzda da ayarlayabilirsiniz .

2) SSH oturumu tepkisiz basın olduğunda Enter, ~, .. Göndermek için tilde iki kez basmanız gerekebilir veya gerekmeyebilir. Gerekli olan birçok yerde okudum, ancak sadece bir kez basarak benim için çalışıyor.

Bu cevap buna ve yorumlarına dayanıyor: https://superuser.com/a/98565/10167


0

Ssh komutunuza bir seçenek ekleyebilirsiniz, şunu deneyin:

ssh -o ServerAliveInterval = 30 kullanıcı adı @ ana bilgisayar

Bu, sizi ev sahibi ile bağlantınızı kesmekten alıkoymalıdır.


0

Kısıtlı durumlar için bir çözüm: Bağlantının kesildiği işlev açıkça çağırmanız için öngörülebilir bir şeyse ve yalnızca başlattıktan sonra temiz bir şekilde çıkmak istiyorsanız ve bu komutun bağlantının kesilmesine neden olması bir saniyeden daha uzun sürecektir. kullanabileceğiniz nohup, sleepve paralel bir çağrı exit. Örneğin, komutunuzun bağlantının kesilmesine neden olması için bir saniyeden daha uzun sürmesi garanti edilirse, bunu şu şekilde çağırabilirsiniz:

nohup <slowcommand> & (sleep 1 && exit)

Bu garantiler:

  • slowcommandexitçağrılmadan önce yayınlanmaya başlayacak
  • slowcommandBir bağlantı kesilmeye neden olmadan önce kabuk çıkacaktır (bağlantı kesilmeye neden olması slowcommandbir saniyeden uzun sürerse)
  • slowcommand çağrı tarafından sonlandırılmayacak exit
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.