Ultimamente, muitas vezes estou usando o recurso ControlMaster do cliente SSH, que me permite usar uma única conexão SSH-TCP para vários shells e encaminhamentos de porta para o mesmo sistema remoto. O mais irritante disso é que o processo do primeiro shell que se abre se torna automaticamente o ControlMaster. Isso significa que, se esse processo for finalizado, todos os outros shells e encaminhamentos de porta usando a conexão principal de controle ficarão indisponíveis.
Eu realmente gostaria que o primeiro comando ssh em um sistema remoto gerasse um processo em segundo plano adicional que mantém a conexão enquanto ainda houver conexões usando a conexão ControlMaster, para que eu pudesse simplesmente fechar os shells reais sem o risco de travar outros conexões. Idealmente, o processo ControlMaster em segundo plano seria configurável para aguardar um período de tempo até que novos shells ou encaminhamentos de portas usem o ControlMaster antes de finalmente desligar.
Existe uma maneira de fazer o cliente ssh fazer uma coisa dessas? Eu sei que poderia criar essa conexão manualmente antes de usar o ssh para criar o primeiro shell, mas quero explicitamente que isso aconteça automaticamente porque, caso contrário, certamente me esqueceria de fazê-lo de vez em quando.
Permitir que um script wrapper faça isso também não seria tão fácil, porque geralmente uso atalhos configurados para nomes de servidores remotos em .ssh / config e o soquete ControlMaster é criado usando USERNAME @ NETWORK_NAME: NETWORK_PORT como nome. Portanto, um wrapper precisaria entender .config / ssh perfeitamente para funcionar como pretendido.