@ A resposta de Renik não funcionou para mim. Veja abaixo o que aconteceu.
Isso funciona para mim usando apenas o arquivo de soquete para o mestre de controle:
$ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>
Exemplo
Aqui está um exemplo em que já estabeleci uma conexão com um servidor remoto:
$ ssh -o ControlPath=~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
Master running (pid=89228)
$
E com isso desconectado:
$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
$
Se ainda estivesse conectado, isso forçaria a saída imediata:
$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$
Não está claro para mim, mas parece ser um bug em ssh
que requer um argumento adicional no final, mesmo que blah
não tenha sentido no contexto dos switches que estou usando. / p>
Sem isso me dá isso:
$ ssh -o ControlPath=~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
Informações da versão
OSX
$ ssh -V
OpenSSH_6.9p1, LibreSSL 2.1.8
CentOS 7.x
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
Confirmei que em ambas as versões, a necessidade do argumento falso adicional era necessária.
Referências