Usando o autossh para criar uma conexão SSH persistente e multiplexada sem qualquer encaminhamento de porta?

5

Eu quero usar o autossh para manter uma sessão ssh configurada para multiplexação. Dessa forma, posso escrever scripts no meu host local que aproveitam a conexão ssh persistente. Estou tendo problemas para fazer com que o ssh e o autossh se comportem de forma consistente e espero que alguém possa me ajudar.

Conteúdo do meu arquivo ~ / .ssh / config ...

 Host cg*
    ServerAliveInterval 300
    ServerAliveCountMax 2

    ControlMaster auto
    ControlPath ~/.ssh/control:%h:%p:%r
    ControlPersist yes

Criando a conexão master ssh ... $ ssh -fNn jehudson@cg5 $ ps aux | grep ssh jehudson 11813 0.0 0.1 5744 628 ? Ss 18:42 0:00 ssh -fNn cg5

Verificando se a conexão está sendo multiplexada ... $ ssh -O check cg5 : Master running (pid=11813)

Abrindo e fechando uma sessão sobre a sessão principal ... $ ssh cg5 $ ... $ exit Shared connection to cg5 closed.

Isso parece estar funcionando corretamente. Agora eu quero fazer a mesma coisa, mas usando o autossh.

Encerrando a conexão principal ... $ ssh -O exit cg5 Exit request sent.

Abrindo a conexão via autossh ... $ autossh -M 0 -fNn jehudson@cg5 $ ps aux | grep autossh jehudson 11826 0.0 0.1 3660 772 pts/1 S+ 18:45 0:00 grep --color=auto autossh

(!) Bem, isso é estranho ... O autossh não parece estar começando, ou se é, está morrendo muito rapidamente.

$ ps aux | grep ssh jehudson 11823 0.0 0.1 5744 916 ? Ss 18:45 0:00 ssh: /home/jehudson/.ssh/control:cg5:22:jehudson [mux]

(!?) Parece que o túnel foi aberto, mas depois de criá-lo, o autossh não continuou a mantê-lo! E por que o arquivo de controle está listado na descrição do processo desta vez?

$ ssh -O check cg5 Master running (pid=11823)

Claramente, uma sessão ssh multiplexada foi estabelecida, mas não está sendo monitorada pelo autossh.
Eu tentei diferentes combinações das bandeiras aceitas pelo autossh, mas não consigo encontrar uma maneira de abrir uma conexão ssh simples e multiplexada, enviá-la para o plano de fundo e fazer com que ela seja monitorada por autossh. Por favor, deixe-me saber se você vê algo que eu possa ter perdido ou se você tem uma sugestão para eu tentar.

    
por Jefferson Hudson 27.04.2015 / 20:57

1 resposta

4

Parece que autossh não joga bem com ControlPersist . Se você deixar ControlPersist ativado, a conexão será encerrada após o período de persistência. Então:

autossh -f -M0 -N -oControlPersist=no $DEST

    
por 02.10.2015 / 11:00

Tags