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?