Uma atualização sobre isso ...
Eu resolvi isso em meus sistemas RHEL / CentOS EL6 ativando o recurso SSH ControlMaster:
No arquivo /home/username/.ssh/config
do host de conexão:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
#ControlPersist 600
O diretório ~/.ssh/sockets/
precisava ser criado manualmente.
A diretiva ControlPersist
é um recurso de persistência que não foi retornado para o OpenSSH disponível no EL6 . Eu queria que fosse, porque sem ele, as conexões de multiplexação terminam quando a conexão inicial morre.
Eu contornei isso com um script Monit rápido e sujo no host de conexão.
check process ssh-control
matching "MNn"
start program = "/usr/bin/ssh -MNn destination" as uid username
stop program = "/usr/bin/pkill -u username ssh"
Onde está o sistema ao qual estou me conectando e é a conta de serviço do sistema de replicação de aplicativo ( admin neste caso).
O ssh -M
é usado para o modo mestre e o compartilhamento de conexão SSH.
-M Places the ssh client into “master” mode for connection sharing. Multiple -M options places
ssh into “master” mode with confirmation required before slave connections are accepted.
O resultado de tudo isso é logs limpos ... e que a enxurrada de comandos ssh iniciados pelo servidor de replicação todos reutilizam o soquete aberto criado pela conexão mestre.
Uma vez que este recurso faça parte do pacote EL6 OpenSSH, poderei me livrar do script Monit e usar apenas o parâmetro ControlPersist
.