
Em nosso ENV temos 2 servidores jumphost nos quais tentamos obter login e executar o comando ssh no servidor remoto, temos o arquivo ssh/confg para cada local com a ajuda do sshproxy entramos no servidor Jump2. queremos mesclar o arquivo de configuração para que possamos acessar todos os servidores de localização ao mesmo tempo.
Consulte abaixo ENV
Laptop -------->
Jumphost1 --------->
Jumphost2 --------->
Servidor remoto
Na verdade, estamos planejando executar um script em minha máquina local e obter a saída armazenada no local. Portanto, para arquivar esta tarefa, precisamos fazer ssh para 2 jumphost e executar o comando abaixo no servidor remoto, que executará o script da máquina local e obterá a saída na própria máquina local.
Jump1 é acessível através da porta 2222, o usuário será o mesmo usuário
mas para acessar o servidor remoto existe um usuário diferente1
ssh user1@ip < ./script >> arquivo.txt &&
Defina seu ~/.ssh/config:
Host Jump1 Usuário jump1user Porta 2222 Host Jump2 ProxyCommand ssh -W %h:%p Jump1 Usuário jump2user Host RemoveServer ProxyCommand ssh -W %h:%p Jump2 Usuário remoteUser
Com este arquivo acima podemos fazer login diretamente no servidor jump2 sem nenhum problema. Mas temos que alterar o arquivo de configuração sempre para cada local.
Para executar o comando ssh do exemplo abaixo em um script para coletar informações de cada região, precisamos de um único arquivo de configuração.
Exemplo
ssh jump2 | ssh user1@remoteserver-ip < ./script >> file.txt &&
Responder1
Espero que este exemplo permita que você use apenas um arquivo:
Host *
User username
IdentityFile /home/username/.ssh/identity
Host some*
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Host other*
ProxyCommand /usr/bin/ssh -p 2222 username@otherjumphost /usr/bin/nc %h %p 2> /dev/null
Host something
HostName 1.2.3.4
Host somethingelse
HostName 2.3.4.5
Host otherthing
HostName 3.4.5.6
Responder2
Host remotehost
ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null
Como o jumphost só é acessível na porta 2222 conforme você descreve, você precisa informar esse fato à conexão SSH do proxy.
Como uma edição adicional da pergunta esclareceu que existem realmentedoishosts através dos quais você fará proxy, isso fica um pouco mais complexo, mas apenas um pouco. Dado:
local.example.com
- O host no qual você trabalha diretamentejump1.example.com
- O host ao qual você se conecta diretamentelocal
jump2.example.com
- O host ao qual você se conecta diretamentejump1
endpoint.example.com
- O host ao qual você está se conectando
Em local.example.com
, adicione o seguinte à sua configuração SSH:
host endpoint.example.com
ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
Em jump1.example.com
, adicione o seguinte à sua configuração SSH:
host endpoint.example.com
ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
Agora você poderá usar ambos os proxies.ssh [email protected]
local.example.com