Proxy SSHComande um host para alcançar outro

Proxy SSHComande um host para alcançar outro

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 diretamente
  • jump1.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

informação relacionada