Mam wpis w ~ / .ssh / config na moim komputerze w domu, który wygląda następująco:
host foo bar
ProxyCommand ssh -x -a -q gateway.example.com nc %h 22
gdzie gateway.example.com
jest serwer w pracy, który jest podłączony zarówno do publicznego Internetu, jak i sieci wewnętrznej. Pole bramki rozwiązuje problem foo i bar przy użyciu wpisów w / etc / hosts.
Mój problem polega na tym, że muszę dotrzeć do pudełka po drugiej stronie foo
. Nazwijmy to „baz”. Host „baz” znajduje się w innej sieci prywatnej, z którą połączony jest Foo, ale nie w tej, do której podłączona jest „brama”.
Próbowałem użyć tego:
host baz
ProxyCommand ssh -x -a -q gateway/example.com ssh foo nc %h 22
Ale to nie działa i jestem trochę z głębi. Jak mam to zrobic?
Nie sądzę, że to powinno mieć znaczenie, ale robię to w Ubuntu 10.
-W
móc pracować. Opiera się on na kodzie przekierowania portów po stronie serwera, który jest znacznie starszy.Używając kluczy prywatnych przechowywanych na komputerze lokalnym, wprowadź to polecenie, zmieniając prywatne klucze, nazwy użytkownika powłoki i nazwy hostów / adresy IP zgodnie z lokalnymi> bramami> docelowymi ssh.
Zauważ, że ProxyCommand jest lepszy niż przekazywanie agentów, aby zmniejszyć ryzyko naruszenia uwierzytelnienia klucza prywatnego (użycie bramy i lokalnego połączenia agenta ssh w celu przejęcia kontroli nad innymi hostami, tak jakby porywacz posiadał klucz prywatny), gdy brama / skoczek są przechwytywane przez root.
Jedno polecenie do serwera proxy SSH do serwera (zachowaj oba klucze prywatne na komputerze lokalnym):
źródło
To właśnie robię, aby wskoczyć z chronionej sieci do Internetu.
Używam laptopa do pracy z kodem podczas kompilacji . Ponieważ kompilacja jest ograniczona od dostępu do Internetu, aby sklonować repozytorium z github.com, najpierw muszę przejść do zestawu narzędzi , który również nie ma dostępu do Internetu. Ale może uzyskać dostęp do gw , który ma Internet.
Lubię to:
Mój
.ssh/config
na kompilacji :Wyjaśnienie.
git clone [email protected]:aRepo/There
po prostu działa!Jasny?
źródło