"I thought that multiple sessions should share the same socket with a connection to the same host."
Eles podem. No entanto, observe que se você se conectar a um host usando uma conexão existente por meio de ControlPath
, independentemente do usuário no qual você pretende fazer login, você fará login como o usuário original da conexão. Por exemplo, sem conexão estabelecida com "algum lugar":
ssh -o ControlPath=~/.ssh/%h -o ControlMaster=yes bob@somewhere
Esta sessão é bob @ em algum lugar.
ssh -o ControlPath=~/.ssh/%h -o ControlMaster=no sue@somewhere
Esta sessão também será bob @ em algum lugar, porque você usou o mesmo ControlPath e configurou ControlMaster=no
; se ControlMaster=yes
, você estaria logado como sue, mas ssh terá ignorado seu argumento ControlPath, como está implícito em man ssh_config
:
Additional sessions can connect to this socket using the same ControlPath with ControlMaster set to 'no'.
Como prova disso, se ControlMaster=yes
em ambos os casos, quando bob sai do soquete do ControlPath ~/.ssh/somewhere
desaparecerá mesmo que a sessão "sue" ainda esteja em execução, significando que a sessão sue nunca usou esse soquete .
Então, se você quiser usar a mesma conexão, apenas %h
é bom, mas cuidado que você não pode compartilhar uma conexão como vários usuários remotos diferentes - o ssh não permite.