PuTTY / SSH: как предотвратить автоматический выход из системы?

11527
feklee

SSH-сервер моего провайдера (Debian 2.0) выводит меня из системы после 35 минут бездействия при подключении к PuTTY (Windows XP). Это большая проблема, когда я использую сервер для переадресации портов. Окончательные сообщения отображаются в терминале:

This terminal has been idle 30 minutes. If it remains idle for 5 more minutes it will be logged out by the system.  Logged out by the system. 

Варианты шпатлевки, которые не помогают:

  • Отправка пустых пакетов для сохранения активности сессии. Секунды между keepalive (0 для выключения): 30
  • [x] Включить поддержку активности TCP (опция SO_KEEPALIVE)

Есть идеи, как избежать автоматического выхода? Должен ли я попробовать другой SSH-клиент?

5
... Debian _2.0_? grawity 13 лет назад 0

4 ответа на вопрос

2
mihi

Когда вам нужна только переадресация портов, вы можете попробовать вообще отключить запуск оболочки и отключить выделение псевдо-терминала. Тогда терминал больше не может быть бездействующим.:-)

Если ваш провайдер не позволяет этого, вы можете запустить такой скрипт в сеансе оболочки

while sleep 60; do echo "Still there" done 

так что терминал показывает активность и не должен выходить из системы.

Но это зависит от операционной системы, которую они используют, какая опция поможет. Вы не сказали нам, не так ли? uname -aтвой друг.

Не выделение псевдотерминала, кажется, действительно предотвращает автоматический выход из системы, по крайней мере, в первом тесте. Спасибо за простое решение! Кстати, я рассказал вам о системе. Смотри мой вопрос. feklee 13 лет назад 0
1
cnst

Which shell are you using on the server?

You can try logging in without a shell at all, by ticking ConnectionSSHDon't start a shell or command at all, or you can try running a different shell and ensuring that it doesn't have an auto-logout feature enabled.

For example, try running tcsh and ensure that autologout is not set, by executing unset autologout.

Оболочка "Баш". Не выделение псевдо-терминала, как предлагает @mihi, делает свое дело. feklee 11 лет назад 0
1
freealx

I have a simple AutoHotkey script to deal with any Telnet/SSH session opened from Windows. It might help somebody:

SetTitleMatchMode 2 ; 2 - partially, 3 - exact match MyWinTitle=- PuTTY ; Describe the window for keep alive signals Timeout=180000 ; Call KeepAlive every 180 seconds (180000 ms) ttl := Timeout / 1000 ToolTip, Keepalives every '%ttl%' seconds for the last touched '%MyWinTitle%' window`nTo stop the keepalive press F12 SetTimer, RemoveToolTip, 3000 ; Shows the tooltip for 5 seconds return RemoveToolTip: SetTimer, RemoveToolTip, Off ; only once ToolTip Gosub, MyKeepAlive Return MyKeepAlive: WinGetActiveTitle, Title IfWinExist, %MyWinTitle% { WinActivate WinGet, mywin_id WinGetActiveTitle, mywin_title Send {!} MsgBox,,Info message, The window for keep-alives is '%mywin_title%',3 WinActivate, %Title% } else { MsgBox,,Exit message, Open the window first!,10 ExitApp } SetTimer, KeepAlive, %Timeout% Return KeepAlive: WinGetActiveTitle, Title WinGetTitle, current_title, ahk_id %mywin_id% If current_title = %mywin_title% { WinActivate, ahk_id %mywin_id% Send {!} WinActivate, %Title% } else { MsgBox,,Exit message, The window was closed!,10 ExitApp } Return Return F12::ExitApp ; Exit button 
0
David Spillett

Похоже, что сервер принудительно устанавливает тайм-аут на уровне протокола и явно игнорирует нулевые пакеты, часто используемые для поддержания соединения в активном режиме, несмотря на такие тайм-ауты. К сожалению, это означает, что, возможно, вы мало что можете сделать с помощью опций клиента.

Вы можете попытаться организовать что-то в сеансе, чтобы оно постоянно обновлялось, возможно, используя screenи упорядочивая часы обновления в строке состояния, как показано в этом примере . Если это отображение часов не обновляется без ввода пользователя, вы можете вместо этого попытаться разделить сеанс экрана (ctrl + a, ctrl + S), изменить размер очень видимого дополнительного окна (ctrl + a,: resize 2) и получить в нем какие автообновления как watch -n 10 dateнапример.