Czy ProxyCommand ssh_config może uruchomić polecenie lokalne przed połączeniem ze zdalnym komputerem?

11

Zanim będę mógł połączyć się z konkretną maszyną zdalną, muszę uruchomić określone polecenie lokalne. Więc zamiast tego ssh [email protected]muszę zrobić

local_command
ssh [email protected]

Chciałbym to zautomatyzować tak, że muszę tylko to zrobić ssh remote.machine.

Wiem, że mogę to osiągnąć na poziomie powłoki, tworząc własny sshskrypt wywołujący /usr/bin/ssh, ale czy mogę to zrobić za pomocą opcji ProxyCommandssh_config ?

O ile rozumiem, potrzebuję czegoś takiego

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

w moim ~/.ssh/configpliku, ale nie do końca tak, ponieważ jest okrągły!

Dave Wilding
źródło

Odpowiedzi:

9

Jeśli używasz ProxyCommand, musisz użyć czegoś takiego jak /usr/bin/ncpołączenie z serwerem.

Aby wywołać polecenie przed połączeniem, musisz użyć, sh -c "command list"aby scalić dwa polecenia jako jedno.

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

WIĘCEJ:

Jeśli twoje local_commandjest zbyt skomplikowane, możesz użyć skryptu:

cat my_connect.sh
#!/bin/bash

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

Konfiguracja ssh zmienia się w:

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

Na koniec możesz dodać własne proxy do /usr/bin/nc

Lai Jiangshan
źródło
1

Skorzystaj z przykładu z połączonej strony:

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

Wywołuje nc (netcat), aby połączyć się z serwerem proxy (proxy działającym na 192.0.2.1:8080) i przekazuje% h i% p do polecenia ssh (% h = nazwa hosta,% p = port)

Tim
źródło