Posso usar o ProxyCommand para executar comandos arbitrários em um servidor de destino por meio de um servidor de jumpbox / middle?

1

No trabalho, temos um número de servidores que só podemos acessar via SSH em nosso servidor jumpbox .

De vez em quando, preciso executar um comando nesses servidores. Por exemplo, se eu quiser executar df -H em server-1 , eu executo este comando:

ssh jumper@jumpbox 'ssh admin@server-1 ''dh -H'''

Nosso jumpbox tem as chaves do SSH em server-1 e minha estação de trabalho local tem as chaves do SSHing no jumpbox .

Para simplificar isso, escrevi um script chamado jumpbox.sh que se parece com isso:

#!/usr/bin/env bash
ssh jumper@jumpbox @

Então, posso simplesmente executar

jumpbox.sh ssh admin@server-1 dh -H

Para alcançar o mesmo objetivo. Existe uma maneira de conseguir isso configurando meu ambiente (por exemplo, editando ~/.ssh/config ), em vez de usando este script personalizado?

Eu encontrei um poucos artigos bem como alguns perguntas no StackOverflow que discutem como usar ProxyCommand podemos conseguir isso, mas parece que não consigo dar certo.

Primeiro de tudo, o manual diz isso sobre ProxyCommand :

Specifies the command to use to connect to the server. The command string extends to the end of the line, and is executed with the user's shell.

Se eu não estiver errado, isso significa que, se eu tiver a seguinte configuração:

Host server-1
    ProxyCommand  ssh jumper@jumpbox nc %h %p

E então no meu shell eu executo

ssh server-1 dh -H

Em seguida, dh -H será ignorado. Portanto, parece que ProxyCommand é útil para abrir uma nova sessão SSH interativa, mas não para executar comandos únicos. Está correto?

Também não entendo bem qual é o papel de nc aqui?

Para resumir, minha pergunta é:

Existe uma maneira de configurar meu ambiente usando ~/.ssh/config , etc. Eu corro ssh admin@server-1 dh -H , por exemplo, o comando é executado através do jumpbox server?

    
por Behrang 14.11.2014 / 15:28

1 resposta

0

Sim ... Você pode conseguir por ProxyCommand. Da sua estação de trabalho, tente executar "ssh admin @ servidor-1 dh -H" .. ele será executado pelo exec ssh -q nc server-1 22 ... Então Proxycommnad ajuda a conectar o servidor do cliente, uma vez conectado, o shell do cliente executará o comando que você deu da sua estação de trabalho.

então .. seu ~ / .ssh / config deve ter a entrada abaixo

Servidor host *     ProxyCommand ssh -q jumper @ jumpbox nc% h% p     StrictHostKeyChecking = não

    
por 23.05.2018 / 17:25