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 me@remote.machinemuszę zrobić

local_command
ssh me@remote.machine

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 me@remote.machine

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

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


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)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.