ProxyCommand di ssh_config può eseguire un comando locale prima di connettersi a una macchina remota?


11

Prima di poter connettermi a un determinato computer remoto, devo eseguire un determinato comando locale. Quindi invece di ssh me@remote.machinedevo fare

local_command
ssh me@remote.machine

Vorrei automatizzare questo in modo che io debba solo fare ssh remote.machine.

So che posso ottenere questo a livello di shell creando il mio sshscript che chiama /usr/bin/ssh, ma posso farlo usando l' opzione ProxyCommand di ssh_config?

Per quanto ho capito, ho bisogno di qualcosa del genere

Host remote.machine
    ProxyCommand local_command; ssh me@remote.machine

nel mio ~/.ssh/configfile, ma non esattamente questo ovviamente perché è circolare!

Risposte:


9

Se si utilizza ProxyCommand, è necessario utilizzare qualcosa di simile /usr/bin/ncper collegare il server.

Per richiamare il comando prima di connettersi, è necessario utilizzare sh -c "command list"per unire i due comandi come uno.

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

DI PIÙ:

Se sei local_commandtroppo complicato, puoi usare uno script:

cat my_connect.sh
#!/bin/bash

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

La configurazione di ssh diventa:

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

Alla fine, puoi aggiungere il tuo proxy al /usr/bin/nc


1

Usa l'esempio dalla pagina che hai collegato:

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

Richiama nc (netcat) per connettersi a un proxy (proxy in esecuzione su 192.0.2.1:8080) e passa% h e% p al comando ssh (% h = hostname,% p = port)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.