Configurei uma conexão SSH para executar um programa em um servidor remoto. O programa imprime informações de depuração no terminal a cada 10 segundos. Se eu deixar as janelas SSH abertas por um longo período (digamos 10 horas), a conexão SSH ficará inativa? Como a atividade é definida em uma sessão SSH? Devo digitar/executar o comando a cada x segundos para manter a sessão ativa?
Responder1
Você não deveria precisar fazer nada de especial, o SSH não encerra uma conexão por causa de inatividade. Portanto, não há período de inatividade definidodentro deSSH.
No entanto, um dos dispositivos na rota de rede entre você e seu servidor pode perder a rota e para essa atividade de um lado geralmente é suficiente, mas nem sempre (existem "pacotes de confirmação de chegada", reconhecimentos, retorno ao servidor a partir do cliente ao usar TCP).
O tráfego de ambos os lados não é garantia de conectividade contínua; se você tiver um modem DSL e seu provedor decidir obter um novo endereço IP todos os dias, a conexão será interrompida.
Você pode fazer com que seu cliente envie alguns pacotes regularmente inserindo
ServerAliveInterval 5
in /etc/ssh/ssh_config
ou você ~/.ssh/config
deve ter algum tráfego de cliente para servidor a cada 5 segundos, além do tráfego proveniente do servidor a cada 10 segundos.
A "solução" mais simples para o modem DSL redefinir uma conexão é executar o software do servidor emtmux
ouscreen
: se a conexão for interrompida, basta fazer SSH no servidor novamente, emitir tmux attach
ou screen -r
e continuar a visualizar o programa do servidor ininterrupto.
Usar tmux
/ screen
é especialmente útil se você não estiver tão preocupado em perder a conexão, mas com a consequência de que o programa do servidor pare se isso acontecer. Para isso você também pode redirecionar a saída do programa original para file e use tail -f
, mas isso não permite interagir facilmente com o programa servidor (se isso for necessário). tmux
e screen
(em suas formas básicas) são fáceis de usar, mas existem alguns efeitos colaterais, como não ser capaz de rolar para trás usando os controles deslizantes em seu terminal gráfico (você precisa usar atalhos de teclado para que o servidor role para trás em seu buffer para que).
Uma solução mais flexível para dispositivos que interrompem sua conexão é usarmosh
. Isso usa SSH para trocar algumas informações secretas e, em seguida, permite a reanexação, mesmo se um ou ambos os endereços IP forem alterados. No entanto, isso é mais difícil de configurar e colocar em prática.
No seu caso, eu começaria usando tmux
e reconectaria manualmente quando a conexão realmente fosse desativada.
Responder2
também é muito útil usar o comando SCREEN. Com isso você pode executar qualquer comando e não se preocupar com sua conexão ssh.