Mantenha uma conexão SSH persistente ao acordar e suspender o computador

2

Aqui estão minhas informações:

  • Eu tenho uma conexão SSH que uso como um proxy SOCKS5. É chato ter que reinicializá-lo toda vez que eu acordei no computador.

  • Eu defini ServerAliveInterval para 60 em ~/.ssh/config . Eu não tenho permissão para adicionar ClientAliveInterval e mesmo se eu tivesse exatamente os mesmos efeitos.

  • A mensagem de erro específica que recebo é "Broken pipe". screen ou tmux não ajudaria aqui, eu teria que anexar toda vez que nos trouxesse de volta ao número numero uno.

  • autossh parece não funcionar. Eu corri autossh -M 0 -DPORT alias e eu vejo isso no gerenciador de tarefas, mas a conexão SSH não parece reiniciar nem mesmo depois de esperar 5 minutos.

Eu li muitas perguntas que dizem para usar uma das três opções acima, mas nenhuma delas aborda acordar e suspender. Eu não posso colocá-lo em algum script de inicialização bash porque eu só quero que isso aconteça uma vez (quando eu entrar no computador). Mas, ao mesmo tempo, quero que minha conexão SSH permaneça ativa se ela morrer enquanto eu estiver nos computadores. Que combinação de efeitos que utilizo para alcançar minha causa?

    
por Goku 02.02.2016 / 03:12

2 respostas

1

Persistência de conexão

Ter conexão persistente requer suporte no lado do servidor. Isso não está disponível no servidor openssh atual (e não parece que será).

A parte cliente foi implementada anos atrás, a famosa UseRoaming recurso, que foi descartado semanas atrás do openssh. O recurso nunca funcionou e foi uma grande vulnerabilidade de segurança . Pode ter funcionado com o servidor appgate.com SSH, mas ouvi falar sobre isso pela primeira vez com esta vulnerabilidade.

Intervalos Vivos de Cliente / Servidor estão funcionando somente dentro da manutenção de atividade TCP e, claro, se você não alterou o endereço IP entre suspender e ativar.

Scripts após o surgimento da rede

Eu consideraria uma solução para o seu caso usar o script ifup (script que é executado depois que a interface de rede é ativada). Pode parecer de alguma forma como isso em /sbin/ifup-local , onde você pode fazer o seu começo SOCKS5:

#!/bin/sh
if [[ "$1" == "eth0" ]]
then
  ssh -DPORT alias
else
  #DO_NOTHING
fi

Não se esqueça de tornar o script executável sudo chmod +x /sbin/ifup-local . Você também pode adicionar mais verificações e outras coisas a esse script, diferenciar as interfaces de rede ou qualquer outra coisa. Fonte

    
por 02.02.2016 / 19:44
0

(resposta um pouco tangencial, mas pode ser útil na sua situação)

Você pode tentar executar o ssh via OpenVPN baseado em UDP (se o seu firewall permitir isso). Esse tipo de trabalho, embora os atrasos na reconexão sejam muito grandes (cerca de um minuto).

No entanto, se você puder usá-lo, tente mosh . Ele foi projetado com persistência de conexão desde o início.

    
por 02.02.2016 / 20:23

Tags