Encontrei essa pergunta , mas desculpe-me por não entender completamente as configurações das duas variáveis ServerAliveInterval
e ClientAliveInterval
mencionadas na resposta aceita. Se meu servidor local estiver atingindo o tempo limite, devo definir esse valor como zero? Será que isso nunca vai expirar? Em vez disso, devo configurá-lo para 300 segundos ou algo assim?
Minha pergunta é simplesmente: algumas das minhas conexões atingem o tempo limite quando eu suspiro e depois desinstalo o laptop com a resposta Write failed: Broken pipe
e outras não. Como posso configurar corretamente um sshd local para que eles não falhem com um pipe quebrado?
fonte
Isso é explicado no
sshd_config
manual (man sshd_config
):Para as opções do cliente, consulte a explicação em
man ssh_config
:Com base no acima, 0 significa que está desativado. Portanto, você deve definir esses valores altos o suficiente para evitar erros no tubo quebrado .
fonte
ServerAliveInterval
no meu arquivo de configuração.A resposta de Barthelemy é legal, mas realmente não chega à raiz do problema. Você suspende sua máquina e deseja que a sessão SSH ainda esteja ativa quando você inicializar o computador.
Não existe uma configuração para o ssh que mantenha a conexão ativa assim. O SSH usa o TCP. Para começar, você precisa do handshake de três direções e, em seguida, mantém-se vivo após algum tempo ocioso. Quando você encerra / hiberna, todas as suas conexões TCP são fechadas com FIN. Não há como superar isso.
Para uma solução alternativa suja, você pode usar o VPS ou outra caixa online com tela para manter a conexão. Meu conselho não faz isso por razões de segurança.
fonte
Como você não pode garantir que uma conexão SSH (sendo TCP) permaneça ativa quando uma extremidade parar de enviar ACKs para pacotes recebidos, eu pessoalmente uso http://www.harding.motd.ca/autossh/ para reiniciar todas as minhas conexões SSH quase assim que eu suspender.
Como o GNU Screen estará em uso no servidor, a reconectação me leva a onde eu estava antes.
Você pode ouvi-lo em portas extras para verificar continuamente se as conexões ainda estão ativas, mas, pessoalmente, acho que funciona bem o suficiente com os desabilitados e confiando apenas no
ServerAliveInterval
/ do próprio SSHServerAliveCountMax
.Outra opção é http://mosh.mit.edu/, que usa UDP e se recupera perfeitamente da falta de conectividade a longo prazo.
fonte
Você também pode executar comandos
nohup
se quiser que eles sejam executados, independentemente da sua conexão SSH.por exemplo
$ nohup tar -xzf some_huge.tar.gz &
A
&
é, penso eu, não é necessário, mas é conveniente, uma vez que torna o processo de execução em segundo plano para que você possa fazer outras coisas.Eu sempre uso nohup para qualquer processo que demore um pouco, para não precisar recomeçar se perder a conexão por qualquer motivo - falta de energia (na minha localização remota, não no host obviamente), falta de rede, qualquer que seja.
fonte
zsh
usuários devem ficar com, emdisown -h
vez denohup
, a menos que o problema tenha sido corrigido desde então.Coloque sua longa sessão dentro da tela Veja a tela -h para detalhes
Dessa forma, você pode se reconectar à máquina usando ssh e reconectar à sessão da tela
fonte