Como impedir que o ssh (via cygwin) seja interrompido na desconexão do servidor / timeout

2

Cenário:

ssh user@host
# good connection, do some work...
# stop working, the server has some function where it automatically disconnects ...
# I come back to my cygwin window and it is unresponsive to ctrl + c/z and finally after maybe 2-5 minutes it comes back with the following error message:
Write failed: Connection reset by peer
MyLocalUsername@MyLocalComputer ~
$
# Now I can resume my cygwin session and reconnect.

Meu problema: é que eu não gosto de como o cygwin trava. Eu não quero forçá-lo a fechar e não estou muito acostumado a ter que abrir outra janela (o ponto de usar o cygwin para mim é ficar no teclado e não perder a produtividade voltando para o Windows. Resumindo, eu em vez disso ctrl + c para trabalhar ou para não travar de jeito nenhum.

    
por Zombies 18.01.2014 / 17:29

3 respostas

2

Isso funciona para mim no Cygwin64 no Windows 8:

1) Inicie a conexão SSH com -e "~" para definir o caractere de escape como til. Deve ser o caractere de escape padrão, mas não funcionou para mim até que eu usei a opção -e. Aparentemente, você também pode definir a diretiva EscapeChar ~ em sua configuração SSH.

2) Quando sua sessão SSH não responder, pressione Enter , ~ , . . Você pode ou não precisar pressionar o til duas vezes para realmente enviá-lo. Eu li em muitos lugares que é necessário, mas funciona para mim pressionando apenas uma vez.

Esta resposta baseia-se nesta e nos seus comentários: link

    
por 29.04.2014 / 15:19
0

Você pode adicionar uma opção ao seu comando ssh, tente isto:

ssh -o ServerAliveInterval=30 username@host

Isso deve evitar desconectar você do host.

    
por 07.09.2017 / 10:11
0

Aqui está uma solução para um conjunto limitado de casos: Se a função que desconecta for algo previsível que você chama explicitamente, e você só quer sair limpa após invocá-la, e se você sabe que este comando levará mais de um segundo para causar a desconexão, você pode usar nohup , sleep e uma chamada paralela para exit . Por exemplo, se seu comando tiver a garantia de levar mais de um segundo para causar a desconexão, você poderá invocá-lo assim:

nohup <slowcommand> & (sleep 1 && exit)

Isso garante:

  • slowcommand começará a ser executado antes que exit seja chamado
  • o shell sairá antes que slowcommand cause uma desconexão (se slowcommand demorar mais de um segundo para causar a desconexão)
  • slowcommand não será encerrado pela chamada para exit
por 02.02.2017 / 08:20

Tags