Existe uma maneira mais direta de sair de um processo mestre de controle OpenSSH e excluir seu arquivo de soquete do que com a ajuda dos programas lsof
ou fuser
e sem conhecer o host de destino (detalhes da conexão), conforme sugerido pela resposta aceita desta pergunta ? Pensei em algo assim na linha de:
$ ssh -O exit -S ~/.ssh/7eb92b0827f3e8e1e8591fb3d1a5cd1b94b758cb.socket
Estou perguntando porque estou procurando uma maneira de script para sair de cada conexão mestre de controle aberto toda vez que eu sair da minha conta de usuário. Não fazer isso faz com que meu computador openSUSE alimentado por sistema aguarde um tempo limite de dois minutos até que ele encerre com força a conexão mestre de controle ainda aberta desligando eventualmente.
Infelizmente , o programa cliente do OpenSSHssh
requer o host de destinoControlPath
e o padrão de nome de arquivo para deduzir o caminho real do arquivo para o arquivo de soquete. Eu, pelo contrário, pensei no método mais direto de fornecer o arquivo de soquete concreto através da -S ctl_path
opção do programa.
Na seção global do meu arquivo de configuração do cliente OpenSSH em todo o sistema, configurei o recurso de multiplexação de conexão do OpenSSH da seguinte maneira:
ControlMaster auto
ControlPath ~/.ssh/%C.socket
ControlPersist 30m
Por favor, note que eu quero manter o padrão de nome de arquivo para arquivos de soquete, ou seja, fazer o hash da string do token %l%h%p%r
com o token %C
.
Alguma ideia?