Przekazywanie określonych portów przez tunele zwrotne SSH

5

Niestety nie mieszkam w miejscu, które nie pozwala mi mieć statycznego adresu IP, więc konfiguruję dostęp do mojego komputera domowego za pośrednictwem odwrotnych tuneli SSH, które działają na instancji micro amazon ec2. Sprawiłem, że SSH działa dobrze, ale nie mogę rozgryźć portu do przodu.

Oto mała infografika, którą pomogłem zilustrować (czułem, że pytanie jest jaśniejsze dzięki schematowi tego, co próbowałem zrobić.

Oto polecenia wymienione na grafice:

Na moim komputerze domowym:

ssh -R 1337:localhost:22 -i .ssh/tokyoMinekey.pem ec2-user@ec2serveraddress

i uruchamiam to na serwerze ec2:

ssh -L6600:localhost:6600 -Nf localhost -p 1337

schemat mojego bólu ... w farbie AHHHHHH YEAHHHHHH!

Do Twojej wiadomości dodałem port 6600 do mojej grupy bezpieczeństwa dla Amazon EC2, więc jest otwarty po stronie ec2

Hortinstein
źródło
Mam podobną konfigurację (chyba), która pozwala mi połączyć się z moim komputerem Mac w domu za pośrednictwem VNC ... Używam serwera w środku i przepycham wszystko przez ssh. Tunele maszynowe Office Win7 do serwera, a tunele domowej maszyny MacOS do serwera, a następnie na biurowej maszynie Win7 uruchamiam klienta VNC i łączę się z hostem lokalnym: customport ... może tunel w Twojej instancji EC2 powinien zostać zainicjowany przez twój klient?
baraboom

Odpowiedzi:

3

Nie jestem pewien, dlaczego używasz tutaj dwóch osobnych poleceń ssh? Jeśli chcesz przekierować port 6600 na EC2 zamiast na port 6600 na komputerze w domu, wszystko, co musisz zrobić, to:

ssh -R :6600:localhost:6600 -i .ssh/tokyoMinekey.pem ec2-user@ec2serveraddress

Należy również upewnić się, że GatewayPortsopcja jest włączona w sshd_configpliku w instancji EC2.

Oczywiście musisz pozostawić otwarte połączenie ssh, aby port mógł dalej działać, ale poza tym nie powinno być żadnych problemów.

TomH
źródło
Mam to działa!
Hortinstein
2

Czy możesz podać wynik:

netstat -tulpen

na ec2serveraddress. Spodziewam się, że oba tunele zaczynają się od 127.0.0.1:PORT? 127.0.0.1jest adresem IP samej maszyny lokalnej, niedostępnym z zewnątrz. Oznacza to, że możesz uzyskać dostęp do tego tunelu z samego serwera, ale nie z żadnej innej maszyny ...

W takim przypadku dodaj następujące informacje do /etc/ssh/sshd_config:

GatewayPorts yes

Ta opcja utworzy porty w 0.0.0.0, dzięki czemu możesz łączyć się z dowolnego miejsca. Jeśli nie ma innych powodów, aby utworzyć dwa połączone tunele, możesz oczywiście zmniejszyć go tylko do jednego:

ssh -R 6600:localhost:22 -i .ssh/tokyoMinekey.pem ec2-user@ec2serveraddress

Spowoduje to utworzenie tunelu ec2serveraddress:6600do twojego home:22.

binfalse
źródło
gist.github.com/1053579 dzieje się, gdy po uruchomieniu na komputerze ec2 wpisuję „netstat -tulpen”: „ssh -R: 6600: localhost: 6600 -i .ssh / tokyoMinekey.pem ec2-user @ ec2serveraddress na moim komputerze domowym „
Hortinstein,
Dlaczego twoje proste wywołanie ssh nie korzysta z dwukropka ssh -R 6600:localhost:22 ..., gdy odpowiedź na @TomH ma taki? ( ssh -R :6600:localhost:22 ...? Czy jest jakaś różnica?
Bryan P