Jak łatwo odrzucić dowolne połączenia przez znany serwer SSH, aby uniknąć zapory ogniowej portów

1

Szukałem metody połączenia z dowolnymi serwerami SSH za pośrednictwem znanego serwera proxy SSH, bez konieczności kodowania tych serwerów docelowych.

Na przykład, powiedzmy, że nie mogę uzyskać dostępu do github.com z mojej bieżącej lokalizacji, ponieważ port 22 jest zaporą ogniową, ale mogę połączyć się z moim serwerem SSH w domu, ponieważ przechodzi on przez port bez zapory ogniowej. Jaki jest najbardziej praktyczny sposób skonfigurowania SSH, aby to zrobić, gdy jawnie chcę się połączyć za pośrednictwem mojego serwera proxy?

Chciałem łatwego rozwiązania; taki, który byłby tak prosty jak pisanie:

$ ssh [email protected]

Przykładem może być „ssh uż[email protected]”.

sleblanc
źródło
1
kiedy mówisz proxy, masz na myśli proxy HTTP? Jeśli tak, sprawdź korkociąg agroman.net/corkscrew
jackweirdy,
Nie, przez proxy rozumiem serwer SSH, z którym możesz się połączyć (maszyna, którą posiadasz). Znalazłem sposób, aby to zrobić, ale muszę poczekać 8 godzin, zanim będę mógł odpowiedzieć na własne pytanie ...
sleblanc,

Odpowiedzi:

2

Dodaj coś takiego do swojego .ssh/config

Host *%myproxy
    ProxyCommand ssh [email protected] /bin/netcat -w 1 $(echo %h | cut -d%% -f1) 22

Następnie możesz po prostu uruchomić polecenie takie jak ssh user@server-i-want-to-connect-to%myproxy. Musisz mieć zainstalowany na serwerze netcat działający jako serwer proxy.

Zoredache
źródło
Jest to prawie dokładnie odpowiedź, którą zamierzałem opublikować (nie mogłem, ponieważ potrzebuję więcej przedstawicieli, aby opublikować odpowiedź przed upływem 8 godzin), ale dodałbym „% p” percent_replace zamiast zakodowanego portu 22 do polecenia netcat. Pozwala to określić dowolny numer portu, z którym należy się połączyć. No i użyłem sed zamiast cięcia.
sleblanc