Acho que o ProxyCommand pode ser usado para reforçar isso. Dê uma olhada no socat para esse fim.
EDITAR:
ssh -o ProxyCommand="socat - SOCKET:<path_to_control_path>" <hostname>
Eu estou procurando uma opção para OpenSSH no Linux para insistir em usar conexão mestre de controle pré-existente. Ou seja, gostaria de ter certeza de que um comando ssh falha se não puder se conectar ao soquete de conexão mestre e nunca tentar conectar-se ao próprio host remoto.
Eu tentei diferentes combinações de ControlPath e ControlMaster, mas parece que ssh, quando o soquete principal não está disponível, tentará se conectar em qualquer caso.
Como solução, coloco o meu ~ / .ssh / config:
Match host my-master-only-host
# Use non-existing port to insist on using master connection
Port 55555
assim, por padrão, o ssh falha e, em seguida, alterna para a porta real ao iniciar a conexão principal:
ssh -p 22 -M my-master-only-host
Isso funciona, mas dependendo das configurações do firewall, ssh sem mestre pode demorar um pouco até o tempo limite de conexão. Alguma maneira melhor?
Acho que o ProxyCommand pode ser usado para reforçar isso. Dê uma olhada no socat para esse fim.
EDITAR:
ssh -o ProxyCommand="socat - SOCKET:<path_to_control_path>" <hostname>
A sugestão de tomek deu uma dica de como eu posso usar o ProxyCommand. A ideia é ter em .ssh/config
:
# By default prevent any connections via immediate exit from proxy.
Match host my-master-only-host
ProxyCommand exit 1
Então eu posso chamar o ssh quando configurar o mestre de controle como:
ssh -M -o ProxyCommand=none my-master-only-host
Aqui ProxyCommand=none
anula o efeito da configuração do ProxyCommand na configuração. Este uso de none
não está documentado, mas funciona com pelo menos o OpenSSH 7.7.
Tags ssh