Eu tenho ServerAliveInterval
e, no caso de poucas máquinas, também ClientAliveInterval
definido como 540 nos arquivos de configuração de cliente / servidor SSH (suponho que configurá-lo para mais do que isso não seria uma boa ideia). Eu trabalho com muitas sessões SSH que atualmente congelam após alguns minutos.
Como posso corrigir isso? O que eu quero é ter uma sessão para não congelar, de modo que, se eu abrir uma sessão às 8 e não a usar por 4 horas, por exemplo, ainda usá-la novamente às 12 sem ter que fazer login novamente .
TCPKeepAlive yes
?TCPKeepAlive yes
- depende da máquina.autossh
...screen
. Mas ainda estou votando sua pergunta porque estou enfrentando o mesmo problema depois de apenas um ou dois minutos.Respostas:
As alterações feitas
/etc/ssh/ssh_config
e/etc/ssh/sshd_config
estão corretas, mas ainda não terão efeito.Para que sua configuração funcione, faça estas alterações na configuração do cliente:
/etc/ssh/ssh_config
ServerAliveInterval O cliente enviará um pacote nulo ao servidor a cada 100 segundos para manter a conexão ativa
Pacote NULL É enviado pelo servidor para o cliente. O mesmo pacote é enviado pelo cliente para o servidor. Um pacote TCP NULL não contém nenhum sinalizador de controle como SYN, ACK, FIN etc. porque o servidor não requer uma resposta do cliente. O pacote NULL é descrito aqui: https://tools.ietf.org/html/rfc6592
Em seguida, configurando a parte sshd no servidor.
/etc/ssh/sshd_config
ClientAliveInterval O servidor aguardará 60 segundos antes de enviar um pacote nulo ao cliente para manter a conexão ativa
TCPKeepAlive Existe para garantir que determinados firewalls não descartem conexões inativas.
O ClientAliveCountMax Server enviará mensagens ativas ao cliente, mesmo que não tenha recebido nenhuma mensagem do cliente.
Finalmente, reinicie o
ssh server
service ssh restart
ouservice sshd restart
dependendo do sistema em que você está.fonte
ServerAliveCountMax
também é necessário um valor alto para que seja o mais confiável possível. E se ambosServerAliveInterval
eClientAliveInterval
são definidas baixa o suficiente, eu não acho que haverá qualquer necessidade deTCPKeepAlive
. Além disso, se houver caixas intermediárias, elas ainda poderão perder o estado, mesmo com todas as configurações mencionadas anteriormente definidas exatamente corretas. Pode ser útil usar o MPTCP (se o cliente e o servidor suportarem).ClientAliveInterval
eClientAliveCountMax
são opções servidor SSH, assim significou parasshd_config
e nãossh_config
ssh_config
as novas sessões lerão esse arquivo. O/etc/environment
arquivo é uma coisa diferente que tem o formatoVAR="value"
sem espaços, portanto,VAR = "value"
seria inválido. A fonte/etc/ssh/ssh_config
dessa maneira lerá:Port 22
ouHost *
será tratada como comandosSugestão pessoal: uso
screen
no host remoto; ele conseguirá manter sua conexão ativa enquanto permanecer ativa em um terminal.Aqui está o que eu normalmente adiciono
/etc/screenrc
para identificar rapidamente minhas sessões de tela:EDIT: Dicas.
A
hardstatus
sequência mostrará uma linha de status inferior como esta:O buffer de rolagem também é estendido para 8192 linhas, em vez das habituais 1000-1500 (dependendo da distribuição).
fonte
screenrc
arquivo? Como configuro o sistema na tela de inicialização / tmux logo após o login?screen
não mantém sua conexão ssh viva. Ele executa processos em um terminal virtual independente do terminal do usuário ao qual você se conecta, parassh
que o processo não dependa da sua conexão. Você ainda perderá suassh
conexão até que ela seja resolvida.screen
, aconselho novos usuários para começartmux
.Com o OpenSSH:
Você precisa habilitar
no seu cliente ssh_config (por exemplo,
/etc/ssh/ssh_config
ou in~/.ssh/config
) e no servidor SSH de destino executando o OpenSSH (por exemplo, / etc / ssh / sshd_config).Assim, toda vez que sua conexão fica ociosa, o OpenSSH envia alguns pacotes fictícios para o host de destino ...
fonte
The default is ''yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes.
...this means that connections will die if the route is down temporarily, and some people find it annoying.
inativa linux.die.net/man/5/sshd_config"[…] network goes down […] client host crashes […] route is down […]"
são erros graves que nenhuma configuração SSH pode capturar. O principal problema aqui são as sessões SSH ociosas, não as falhas de rede. Portanto, para resumir: - ativeTCPKeepAlive yes
no servidor e no cliente. - definidoClientAliveInterval
no servidor - definirIdleTimeout
no servidor - definirClientAliveCountMax
Isso deve fazer o truque ...Se o problema for um laptop hibernado ou uma conexão de rede menos que perfeita, eu recomendo usar o
mosh
que atropelassh
e permite a reconexão automática.No site :
Em combinação com
tmux
(ou mais antigoscreen
), isso me permite conectar viassh
servidor a um servidor do meu laptop e permanecer conectado por dias, mesmo ao alterar as conexões Wi-Fi e sobreviver a desistências de dados móveis.fonte
Verifique a sua configuração sshd na máquina host
/etc/sshd_config
para aIdleTimeout
configuração .fonte