PuTTY / SSH: Como impedir o logout automático?

5

O servidor SSH do meu ISP (Debian 2.0) faz logout após 35 minutos de inatividade, quando conectado ao PuTTY (Windows XP). Este é um grande problema quando utilizo o servidor para encaminhamento de porta. As mensagens finais exibidas no terminal:

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.

Opções do PuTTY que não não ajudam:

  • Envio de pacotes nulos para manter a sessão ativa. Segundos entre keepalives (0 para desligar): 30
  • [x] Ativar keepalives de TCP (opção SO_KEEPALIVE)

Alguma ideia de como evitar o logout automático? Devo tentar outro cliente SSH?

    
por feklee 20.06.2010 / 13:25

4 respostas

2

Quando você precisar apenas de encaminhamento de porta, poderá tentar desativar o início de um shell e desabilitar a alocação de um pseudo-terminal. Então o terminal não pode mais ficar inativo. :-)

Se o seu ISP não permitir isso, você pode executar um script como este na sua sessão de shell

while sleep 60; do
    echo "Still there"
done

para que o terminal mostre atividade e não seja desconectado.

Mas isso depende do sistema operacional que eles estão usando, que opção ajudará. Você não nos contou, não é? uname -a é seu amigo.

    
por 20.06.2010 / 13:48
1

Qual shell você está usando no servidor?

Você pode tentar efetuar login sem um shell, marcando ConnectionSSHDon't start a shell or command at all ou pode tentar executar um shell diferente e garantir que ele não tenha um recurso de logout automático ativado .

Por exemplo, tente executar tcsh e certifique-se de que autologout não esteja definido, executando unset autologout .

    
por 07.01.2013 / 20:42
1

Eu tenho um script AutoHotkey simples para lidar com qualquer sessão Telnet / SSH aberta no Windows. Pode ajudar alguém:

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 {!}{BS}
        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 {!}{BS}
            WinActivate, %Title%
        }
        else
        {
            MsgBox,,Exit message, The window was closed!,10
            ExitApp
        }
    Return
Return

F12::ExitApp                ; Exit button
    
por 30.10.2013 / 23:40
0

Parece que o servidor está impondo o tempo limite no nível do protocolo e ignorando explicitamente os pacotes nulos usados com freqüência para manter uma conexão ativa apesar desses tempos limite. Infelizmente isso significa que provavelmente há pouco que você pode fazer através das opções do cliente.

Você pode tentar fazer com que algo na sessão seja constantemente atualizado, talvez usando screen e organizando a atualização de um relógio na barra de status, conforme visto neste exemplo . Se a exibição do relógio não atualizar sem a entrada do usuário, você poderia tentar dividir a sessão de tela (ctrl + a, ctrl + S), redimensionar a janela extra visível muito pequena (ctrl + a,: resize 2) e ter nessa que faz atualizações automáticas como watch -n 10 date , por exemplo.

    
por 20.06.2010 / 13:52