Eu tenho uma conexão ssh com uma máquina que é desconectada por essa máquina após 30 minutos sem entrada do usuário. No entanto, se eu começar algo como top
, a conexão permanecerá ativa. Como esta é a máquina de um cliente, não posso reconfigurar o servidor SSH dessa máquina. Então, estou procurando uma maneira de detectar automaticamente a ociosidade e iniciar algo assim top
. Uma espécie de "protetor de tela" para o Bash.
Eu sei que posso fazer isso com screen
, mas infelizmente screen
não está instalado e não consigo instalar o software. Então, preciso usar o que o Bash oferece.
Para deixar claro: estou procurando uma solução que inicio uma vez após o login e, em seguida, quero usar esse terminal, sair, voltar duas horas depois e continuar trabalhando, sem digitar nada antes de sair. Além disso, não estou procurando encapsular coisas (por isso recomendo a ótima ferramenta sshuttle )
Alguma ideia?
Respostas:
O problema é que há algo (geralmente um firewall ou balanceador de carga) que está descartando sessões inativas. Se você configurar os keepalives da sessão, os keepalives impedirão que os dispositivos de rede considerem a sessão inativa.
Correção do Linux / Unix / Cygwin OpenSSH :
A correção mais simples é ativar a manutenção de vida do cliente ssh; este exemplo envia um keepalive ssh a cada 60 segundos:
Se você deseja habilitar isso em todas as suas sessões, coloque-o em seu
/etc/ssh/ssh_config
ou~/.ssh/config
:Para mais informações, consulte a página de
ssh_config
manualPutty Fix :
Salve isso no seu PuTTY "Configurações padrão" ...
fonte
Além da resposta de Mike Pennigton , também gostaria de informá -lo
ServerAliveCountMax
.ServerAliveInterval
enviará uma keepalive a cada x segundos (o padrão é 0 , que desativa esse recurso se não estiver definido para outra coisa).ServerAliveCountMax
vezes se nenhuma resposta for recebida. O valor padrãoServerAliveCountMax
é 3 (consulte a página de manual ssh_config ).Exemplo: se você definir
ServerAliveInterval
para 60 e deixarServerAliveCountMax
como está, isso significa que a manutenção da atividade continuará aguardando apenas3 * 60 = 180 seconds =
3 minutos antes de sair.Para aumentar isso para, por exemplo, 2 horas tentando manter a conexão ativa, você pode:
Por comando:
Portanto, você deve considerar definir
Persistente:
Para torná-lo persistente, grave-o em
/etc/ssh/ssh_config
(será aplicado em todo o sistema) ou~/.ssh/config
(somente em usuários):Nota
Como dislick apontou corretamente , isso pode não ser o que você deseja, dependendo da sua situação:
ServerAliveCountMax
.ServerAliveCountMax
permitirssh
continuar tentando restabelecer a conexão.Veja também:
fonte
ServerAliveCountMax
especifica a quantidade de mensagens ativas do servidor que podem ser enviadas sem receber nenhuma mensagem do servidor. Se você desejassh
sair após o congelamento (para poder reiniciá-lo), definaServerAliveCountMax
um número baixo . Veja a página de manual OP vinculada.Estou usando o Mobaxterm e também encontrei esse problema. O Mobaxterm também é fornecido com uma opção para manter o cliente ativo quando ele estiver ocioso. Vá para
Settings -> Configuration -> SSH
. Há uma seção intituladaSSH settings
, marque a opçãoSSH keepalive
. Então o problema deve desaparecer.fonte