O uso de uma conexão mestre não altera a maneira como você chama o ssh, exceto as opções relacionadas ao compartilhamento de conexão ( -S
, -M
, -o ControlXXX
). Todas as mudanças de conexão mestre são que, quando uma conexão principal já está estabelecida, novas conexões escravas passam por isso, em vez de autenticar novamente. Isso economiza a necessidade de fornecer uma senha ou chave e pode acelerar notavelmente o estabelecimento da nova conexão.
A multiplexação não faz diferença para os aplicativos. Faz diferença para os firewalls: existe uma única conexão em vez de muitos.
Eu não sei por que Symkat afirma que “o ssh pode não funcionar com sua conexão multiplexada. Mais notavelmente comandos que usam tunelamento como git, svn ou rsync, ou encaminhando uma porta. ” Se funcionou sem multiplexação, também funcionará com multiplexação, porque os aplicativos não podem dizer a diferença.
O Guia Definitivo do SSH não está se referindo à multiplexação de conexão, mas a “Us [ing] LocalForward ou RemoteForward no seu arquivo de configuração”. (Esse livro data de antes da multiplexação de conexão existir.) Está dizendo que você pode estabelecer um túnel escutando em uma determinada porta apenas uma vez. Trata-se de encaminhamento, não de multiplexação.
Para começar a usar a multiplexação, adicione as seguintes linhas ao seu ~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/%l_%h_%p_%r.multiplex
Isso é tudo. Se você quiser estabelecer uma conexão com um host e mantê-lo até ser explicitamente eliminado, execute ssh -N destination &
. Quando você não quiser mais essa conexão principal, mate o cliente. Você ainda precisará configurar seus túneis exatamente como antes.
Se você estiver usando um host como retransmissora para muitas coisas, convém configurar um proxy SOCKS . Execute ssh -D 1234 destination
e informe seus aplicativos com suporte ao SOCKS para usar o proxy SOCKS em localhost:1234
. Claro que isso só funciona com aplicativos que entendem o SOCKS; você pode usar tsocks nas conexões de rede da maioria dos aplicativos que não usam o SOCKS para passar pelo proxy SOCKS (o tsocks funciona redirecionando as chamadas da biblioteca para funções wrapper).