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
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.
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