terminal travar quando a conexão perdida e o ssh estiver ligado

11

quando eu ssh para um servidor através da internet em uma guia do terminal do gnome, se eu perdi a conexão com a internet, a guia do terminal ficará travada e não aceitará nenhuma entrada. Por que está pendurado?

Existe alguma maneira de ativar a guia do terminal, ou seja, continuar executando o processo de shell local?

O fechamento da guia do terminal é o único caminho?

    
por Tim 16.04.2015 / 23:17

1 resposta

13

A conexão SSH é desativada automaticamente após um período de tempo especificado pelos parâmetros ClientAliveInterval e ClientAliveCountMax e seus equivalentes no lado do cliente. Se esses tempos limite forem muito altos, você terá uma casca congelada. No entanto, se você usar OpenSSH , não precisará aguardar um tempo limite e forçar o fechamento de uma conexão usando caracteres de escape :

ESCAPE CHARACTERS
When a pseudo-terminal has been requested, ssh supports a number
of functions through the use of an escape character.  A single
tilde character can be sent as ~~ or by following the tilde by a
character other than those described below. The escape character
must always follow a newline to be interpreted as special. The
escape character can be changed in configuration files using the
EscapeChar configuration directive or on the command line by the
-e option.
The supported escapes (assuming the default ‘~’) are:

~.
    Disconnect.
(...)

Quando a conexão congela, pressione ~ (ou seja, as teclas Shift + ' juntas), libere-a e pressione . . Alternativamente, se você trabalha com uma conexão instável ou precisa estar conectado ao servidor remoto o tempo todo, você pode usar o autossh para renovar automaticamente a conexão perdida, é muito conveniente.

EDITAR :

No entanto, se ClientAliveInterval e ServerAliveInterval forem definidos como 0 explicitamente ou não forem definidos explicitamente e forem definidos como 0 por padrão de acordo com as páginas de manual sshd_config e ssh_config , as configurações de tempo limite serão definidas nas seguintes arquivos (de link ):

  # cat /proc/sys/net/ipv4/tcp_keepalive_time
  7200

  # cat /proc/sys/net/ipv4/tcp_keepalive_intvl
  75

  # cat /proc/sys/net/ipv4/tcp_keepalive_probes
  9

  The first two parameters are expressed in seconds, and the last is
  the pure number. This means that the keepalive routines wait for
  two hours (7200 secs) before sending the first keepalive probe,
  and then resend it every 75 seconds. If no ACK response is
  received for nine consecutive times, the connection is marked as
  broken.

Você pode modificar esses 3 arquivos usando apenas echo e perceber que uma sessão SSH congelada está desconectada de acordo com esses valores.

    
por 17.04.2015 / 00:38