Para manter a conexão viva , você pode fazer check-in /etc/ssh/ssh_config a linha onde diz ServerAliveInterval, que informa com que freqüência (em segundos) seu computador enviará um pacote nulo para manter a conexão ativa. Se você tem um 0 lá que indica que o seu computador não está tentando manter a conexão viva (ele está desabilitado), caso contrário, ele diz com que freqüência (em segundos) ele está enviando o pacote acima mencionado. Tente colocar em 120 ou 240, se ainda está matando sua conexão, você pode ir mais baixo, talvez para 5, se com esse número isso não acontecer, talvez seja o seu roteador que está descarregando a conexão para liberar memória.
Para matá-lo quando ele é desligado , você pode usar o caractere de escape ssh:
~.
Ou seja, pressione o til e, em seguida, o período, se não funcionar, pressione Enter antes de pressionar o botão, o que eliminará a conexão imediatamente.
Ok, você pode matar a conexão com ~., ótima dica! Mas o que isso realmente faz?
CousinCocaine
A única coisa que eu estava confuso era se eu tinha ou não que reiniciar o sshd, mas parece que apenas sair da sessão e reconectar fez o truque
dgig
Muitas vezes o ~. não funciona para mim por vários minutos. Por que é que?
Sridhar-Sarnobat
2
A localização de ssh_config é /etc/ssh/ssh_config no Mac OS X. Eu mesmo editaria a resposta, mas não tenho representante suficiente neste site para fazer isso.
Erik B
devo colocar isso no cliente ou no servidor? Eu acho cliente, mas pode ser mais claro.
EralpB
18
Você pode:
Configure seu sistema, em todo o sistema, para todas as conexões
Editando: / etc / ssh / ssh_config E adicione a linha:
ServerAliveInterval 10
Ou por servidor ~ / .ssh / config
Host keepsdroppingme.com
ServerAliveInterval 10
O que isso basicamente faz envia pacote keep alive, a cada 10 segundos ...
Você também pode tentar usar o incrível projeto mosh . Ele manipulará graciosamente as perdas de rede, máquinas que irão adormecer, etc e, felizmente, restaurará a conexão quando você tiver uma rede funcionando novamente.
Outra solução mais consagrada pelo tempo é usar tmux na máquina remota. Nesse caso, você ainda pode obter um cano quebrado, mas se você reconectar seu shell e os aplicativos estarão aguardando exatamente quando você os deixou.
Na verdade, é exatamente isso que estou fazendo agora.
Dan
3
As várias respostas aqui estão em conflito em relação ao caminho exato para os arquivos de configuração. Talvez seja diferente em diferentes unixes? Sugiro ler as páginas do manual em seu sistema!
Em homem ssh (1) , procure por texto: config . No meu sistema, eu tenho uma escolha de arquivos de configuração do sistema ou deste usuário (e os caminhos são estranhamente diferentes).
Em homem ssh_config (5) , procure por texto: vivo . No meu sistema, parece que eu preciso definir ambos ServerAliveInterval e ServerAliveCountMax .
O que funcionou para mim, no macOS 10.12 Sierra, é colocar as duas linhas seguintes em ~ / .ssh / config:
ServerAliveInterval 20
ServerAliveCountMax 180
Agora eu posso ssh para o meu servidor Ubuntu 16.04 sem desconexão por 20 * 180 segundos = 1 hora. Fez o meu dia!
~.
, ótima dica! Mas o que isso realmente faz?ssh_config
é/etc/ssh/ssh_config
no Mac OS X. Eu mesmo editaria a resposta, mas não tenho representante suficiente neste site para fazer isso.Você pode:
Configure seu sistema, em todo o sistema, para todas as conexões Editando: / etc / ssh / ssh_config E adicione a linha:
Ou por servidor ~ / .ssh / config
O que isso basicamente faz envia pacote keep alive, a cada 10 segundos ...
fonte
Você também pode tentar usar o incrível projeto mosh . Ele manipulará graciosamente as perdas de rede, máquinas que irão adormecer, etc e, felizmente, restaurará a conexão quando você tiver uma rede funcionando novamente.
Outra solução mais consagrada pelo tempo é usar tmux na máquina remota. Nesse caso, você ainda pode obter um cano quebrado, mas se você reconectar seu shell e os aplicativos estarão aguardando exatamente quando você os deixou.
fonte
As várias respostas aqui estão em conflito em relação ao caminho exato para os arquivos de configuração. Talvez seja diferente em diferentes unixes? Sugiro ler as páginas do manual em seu sistema!
Em homem ssh (1) , procure por texto: config . No meu sistema, eu tenho uma escolha de arquivos de configuração do sistema ou deste usuário (e os caminhos são estranhamente diferentes).
Em homem ssh_config (5) , procure por texto: vivo . No meu sistema, parece que eu preciso definir ambos ServerAliveInterval e ServerAliveCountMax .
O que funcionou para mim, no macOS 10.12 Sierra, é colocar as duas linhas seguintes em ~ / .ssh / config:
Agora eu posso ssh para o meu servidor Ubuntu 16.04 sem desconexão por 20 * 180 segundos = 1 hora. Fez o meu dia!
fonte
Reconectar automaticamente ssh após o sono ou interrupção wi-fi
Instalar autossh de MacPorts ou Homebrew:
brew install autossh
Abra o Terminal e execute
autossh -M 20000 -f [SSH ARGUMENTS GO HERE]
Desconecte seu wifi ou coloque seu Mac para dormir.
Quando você se reconectar a wifi, a sessão ssh será automaticamente reconectada.
Automaticamente ssh após o login
Jon Stacey escreveu uma postagem no blog sobre a ativação automática de um ssh sessão quando você faz o login.
Instalar autossh de MacPorts ou Homebrew:
brew install autossh
Criar um Fluxo de trabalho do Automator com um script bash.
fonte
Adicione estas duas linhas para
/etc/ssh/ssh_config
:fonte