Ferramentas do usuário

Ferramentas do site


redes:openssh_multiplexer

OpenSSH Multiplexer para acelerar conexões OpenSSH

Introdução

Um multiplexador, multiplexer, mux ou multiplex é um dispositivo que seleciona as informações de duas ou mais fontes de dados num único canal. Em processamento de sinais digitais, o multiplexador obtém fluxos de dados distintos e combina-os num único fluxo de dados com uma taxa de transferência mais elevada. Isto permite que múltiplos fluxos de dados sejam transportados de um local para outro através de uma única ligação física, o que reduz os custos. Wikipédia

“Multiplexar” nada mais é do que enviar mais de uma conexão ssh sobre uma única conexão. O OpenSSH pode reutilizar uma conexão TCP para multiplas sessões SSH concorrentes. Isso resulta em uma redução do consumo de recurso de criar novas conexões TCP. Primeiro, você precisa configurar um “ControlMaster” para abrir um soquete de domínio Unix localmente. O restante de todos os seus comandos ssh conectarão ao ControlMaster via soquete de domínio Unix. O ControlMaster nos dá os seguintes beneficios:

  • O uso de um único soquete já existente
  • Sem novas conexões TCP/IP
  • Não necessita troca de chaves
  • Não necessita autenticação e mais

Como configurar o multiplexador

Edite $HOME/.ssh/config, digite no terminal:

  gedit ~/.ssh/config

Adicione a seguinte configuração:

  Host *
    ControlMaster auto
    ControlPath ~/.ssh/master-%[email protected]%h:%p.socket
    ControlPersist 30m

Outro exemplo:

  Host server1
    HostName server1.linuxmint.com.br
    Port 2222
    ControlPath ~/.ssh/ssh-mux-%[email protected]%h:%p
    ControlMaster auto
    ControlPersist 10m

Salve o arquivo e feche.

Essas configurações fazem o sequinte:

  • Host * ou Host server1 : Começa uma configuração ssh.
  • HostName server1.linuxmint.com.br : O hostname real ou IP se preferir
  • ControlPath ~/.ssh/ssh-mux-%[email protected]%h:%p : Especifica o caminho para o soquete unix de controle usado para compartilhar a conexão como descrito acima. As variáveis '%r', '%h' e '%p' se referem ao nome de usuário, host e porta da conexão ssh remota respectivamente. Você precisa configurar essas três variáveis.
  • ControlMaster auto : Habilita o compartilhamento de multiplas sessões sobre uma única conexão de rede. Quando configurado como “yes”, o ssh “escutará” as conexões no soquete de controle especificados no arqumento ControlPath. Quando configurado como auto, o ssh irá tentar usar a conexão master, caso não exista, tentará criar uma nova.
  • ControlPersist 10m : Especifica que a conexão master deve permanecer aberta em segundo plano por 10 minutos. Sem conexões de clientes, a conexão master, em segundo plano, irá automaticamente terminar assim que ficar ociosa por esses 10 minutos.

Como eu uso isso?

Simplismente inicie rodando o comando ssh:

  ssh [email protected]
  ssh [email protected]
  ssh [email protected]

Como sei se esse Multiplexador está funcionando?

Para saber se o está funcionanco corretamente use um desses comandos:

  lsof -U | grep master

que teria uma saída como essa:

  ssh       23827 welblade    4u  unix 0x0000000000000000      0t0 21113 /tmp/master-192.168.1.219-22-ada.dhssvLEHWq3oawL9
  ssh       23827 welblade    5u  unix 0x0000000000000000      0t0 22230 /tmp/master-192.168.1.219-22-ada.dhssvLEHWq3oawL9

Ou

  ssh -O check [email protected]

a saída:

  Master running (pid=23827)

Eu posso dizer à conexão master para não aceitar mais pedidos de multiplexação?

A sintaxe é como encaminhar a porta 3128 no host local para a porta 3128 no host remoto usando -L:

  ssh -O forward -L 3128:localhost:3128 v.server1

Você pode ainda especificar a localização de um soquete de controle para um compartilhamento de conexão:

  ssh -O forward -L 3128:localhost:3128 -S $HOME/.ssh/[email protected]:22 v.server1

Referência

redes/openssh_multiplexer.txt · Última modificação: 2015/05/09 12:28 por 8812