O ProxyCommand do ssh_config pode executar um comando local antes de conectar a uma máquina remota?

9

Antes de poder conectar-me a uma máquina remota específica, tenho que executar um determinado comando local. Então, ao invés de ssh [email protected] eu tenho que fazer

local_command
ssh [email protected]

Eu gostaria de automatizar isso para que eu tenha que fazer apenas ssh remote.machine .

Eu sei que posso conseguir isso no nível do shell criando meu próprio script ssh que chama /usr/bin/ssh , mas posso fazê-lo usando o Opção ProxyCommand de ssh_config ?

Tanto quanto eu entendo, eu preciso de algo como

Host remote.machine
    ProxyCommand local_command; ssh [email protected]

no meu arquivo ~/.ssh/config , mas não exatamente isso, é claro, porque é circular!

    
por Dave Wilding 30.07.2012 / 18:02

2 respostas

9

Se estiver usando ProxyCommand , você deve usar algo como /usr/bin/nc para conectar o servidor.

Para invocar seu comando antes de conectar, você precisa usar sh -c "command list" para mesclar os dois comandos como um.

Host remote.machine
    ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

MAIS:

Se o seu local_command for muito complicado, você pode usar um script:

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

A configuração do ssh torna-se:

Host remote.machine
        ProxyCommand /path_to_my_connect.sh %h %p

Por fim, você pode adicionar seu próprio proxy ao /usr/bin/nc

    
por 31.07.2012 / 04:00
1

Use o exemplo da página que você vinculou:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p

Invoca nc (netcat) para conectar-se a um proxy (proxy em execução em 192.0.2.1:8080) e passa% he% p ao comando ssh (% h = hostname,% p = port)

    
por 30.07.2012 / 19:23

Tags