Posso fazer com que o ssh me diga qual arquivo de controle ele usaria para a multiplexação?

2

Estou usando as seguintes opções no meu ~/.ssh/config para ativar a multiplexação de conexão:

ControlMaster auto
ControlPath ~/.ssh/control/master-%r@%h:%p

No entanto, isso tem o problema irritante de que o primeiro shell a se conectar a um determinado servidor deve ser o último a ser desconectado, porque é a conexão principal que todas as outras conexões estão usando. Então, se você sair do mestre, parece apenas travar. Para resolver isso, eu gostaria de envolver o ssh com um script que verifica se o arquivo mestre de controle existe e, se não, inicia um processo mestre ssh em segundo plano. Então começaria uma sessão ssh escrava.

Para conseguir isso, meu script teria que determinar o caminho para o arquivo de controle que o ssh usaria. Isso implicaria analisar as opções de linha de comando e arquivos de configuração do ssh e implementar a lógica para determinar o ControlPath. Existe alguma maneira de perguntar ao ssh qual caminho ele usaria, para que eu possa verificá-lo?

    
por Ryan Thompson 09.05.2010 / 19:47

2 respostas

2

Apenas encontrei. ssh -O check HOST

    
por 09.05.2010 / 19:58
0

Dos meus testes, a resposta aceita:

ssh -O check HOST

só fornecerá o arquivo de controle se ele não sair

Control socket connect(<path to control file>): No such file or directory

caso contrário

Master running (pid=<number>)

No entanto, grep e ssh -G sempre fornecerão o caminho.

-G Causes ssh to print its configuration after evaluating Host and Match blocks and exit.

>>> ssh -G HOST | grep controlpath
controlpath <path to control file>

Nota: Se você usar %l ou %C (por exemplo) no arquivo de configuração ssh, isso será avaliado para a máquina local.

    
por 27.08.2018 / 15:56