Por que o "ssh_config (5)" manpages recomendam que a ControlPath
opção deve conter pelo menos as %h
, %p
e %r
espaços reservados, a fim de identificar exclusivamente cada conexão compartilhada?
Eu pensei que várias sessões deveriam compartilhar o mesmo soquete com uma conexão com o mesmo host. Não faria sentido ter uma definição simples, como:
ControlPath ~/.cache/ssh/mux/%h
Em vez de algo como:
ControlPath ~/.cache/ssh/mux/%r@%h:%p
No meu entendimento com a primeira definição, uma conexão é compartilhada entre várias sessões com diferentes usuários remotos, no mesmo host remoto, em portas remotas diferentes.
Eu quero ter a primeira definição na seção padrão do host para que seja suficiente dizer ssh -o ControlMaster=no
.
Desejo compartilhar a conexão com o mesmo host remoto entre todas as sessões iniciadas pelo mesmo usuário local, independentemente do usuário remoto e da porta remota. O soquete do cliente mestre deve residir abaixo do diretório inicial do usuário local.
fonte
Respostas:
Eles podem. No entanto, observe que, se você se conectar a um host usando uma conexão existente via
ControlPath
, independentemente de qual usuário você deseja fazer login, será conectado como o usuário original da conexão. Por exemplo, sem conexão estabelecida com "algum lugar":Esta sessão é bob @ algures.
Esta sessão também será bob @ algures, porque você usou o mesmo ControlPath e set
ControlMaster=no
; seControlMaster=yes
, você efetuaria login como sue, mas o ssh terá ignorado seu argumento ControlPath, como está implícito emman ssh_config
:Como prova disso, se
ControlMaster=yes
em ambos os casos, quando bob sair do soquete ControlPath,~/.ssh/somewhere
ele desaparecerá mesmo que a sessão "sue" ainda esteja em execução, o que significa que a sessão de processamento nunca usou esse soquete .Portanto, se você deseja usar a mesma conexão, tudo
%h
bem, mas tenha cuidado para não compartilhar uma conexão como vários usuários remotos diferentes - o ssh não permitirá.fonte
Você pode ter vários usuários e várias portas em uso até para o mesmo servidor. Eu mesmo, conecto-me a centenas de sistemas nas intranets da empresa, a maioria possui vários usuários com diferentes funções ou servidores de aplicativos. O acesso ao usuário A é muito diferente do acesso ao usuárioB, e a conexão principal precisaria ser diferente. Mais sucintamente, se você fosse executar:
Como você pode ver, não temos uma sessão do OpenSSH com o usuárioB, mas a original com o usuárioA. Isso significa que o diretório inicial, as permissões e até a autenticação em si não é o esperado. Usando isso, se você tentar excluir um arquivo no diretório do usuárioB, a) poderá ser o arquivo errado eb) permissões incorretas.
Se você nunca estará se conectando a mais de um único usuário em qualquer servidor usando uma única porta, sim, usar
%h
poderá ser suficiente. No seu~/.ssh/config
arquivo, você deseja usar:Com a
ControlPersist
opção, a conexão principal permanece aberta em segundo plano até ser interrompida ou finalizada comssh -O exit
. Este é um bom recurso de configurar e esquecer.Mas se houver qualquer possibilidade de se conectar a mais de um usuário em qualquer um host, então você quer algo mais seguro:
fonte