SSH ProxyCommand um host para alcançar outro [fechado]

0

Em nosso ENV, temos 2 servidores jumphost em que tentamos obter login e executar o comando ssh no servidor remoto, temos o arquivo ssh / confg para cada local com a ajuda do sshproxy que entramos no servidor Jump2. queremos mesclar o arquivo de configuração para que possamos acessar todo o servidor de localização ao mesmo tempo.

Consulte abaixo ENV
Laptop --------> Jumphost1 ---------> Jumphost2 ---------> Servidor remoto

Na verdade, estamos planejando executar um script da minha máquina local e obter a saída armazenada no local. Então, para arquivar essa 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.

O Jump1 é acessível via 2222 o usuário da porta 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   Porto 2222 Host Jump2   ProxyCommand ssh -W% h:% p Jump1   Usuário jump2user Anfitrião 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 mudar o arquivo de configuração toda vez para cada local.

Para executar este exemplo abaixo do comando ssh 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 &&
    
por Shanker 21.04.2017 / 17:09

2 respostas

2

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
    
por 21.04.2017 / 19:24
2
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, como você descreve, você precisa informar esse fato à conexão SSH do proxy.

Como uma edição posterior da questão esclareceu que existem, na verdade, dois hosts através dos quais você será proxy, isso fica um pouco mais complexo, mas apenas ligeiramente. Dado:

  • local.example.com - O host no qual você trabalha diretamente
  • jump1.example.com - O host ao qual você se conecta diretamente de local
  • jump2.example.com - O host ao qual você se conecta diretamente de jump1
  • endpoint.example.com - O host ao qual você está se conectando

Em local.example.com , adicione o seguinte à sua configuração de 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 de SSH:

host endpoint.example.com
    ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null

Agora você poderá ssh [email protected] de local.example.com nos dois proxies.

    
por 21.04.2017 / 18:57

Tags