Chcę skierować port VNC z powrotem do mojego domu tutaj. Muszę przeskoczyć nad jednym hostem, a następnie wskoczyć na moją maszynę roboczą.
sittinghere
będzie moją lokalną maszyną domowąhopper
na pośrednim skoku, który muszę zrobićoverthere
będzie maszyną do pracy zdalnej
Mogę to zrobić SSH na mojej maszynie roboczej:
ssh -t hopper "ssh -t overthere"
Chciałbym użyć przekierowania portów do przekierowania zdalnego portu 5900 na overthere
lokalny port 5900 włączony sittinghere
. Wolałbym jednak móc to zrobić bez otwartego wiązania z portem, hopper
ponieważ każdy na tym komputerze byłby w stanie podłączyć się do mojego połączenia VNC.
Czy jest jakiś sposób, aby bezpiecznie przekierować ten port na mój komputer lokalny bez dostępu do niego hopper
?
ssh
port-forwarding
Naftuli Kay
źródło
źródło
Odpowiedzi:
Używanie natywnej zdolności SSH do przekazywania portów. Od
sittinghere
wykonania:Skieruj swojego klienta VNC na,
localhost:5900
a ruch będzie tunelowanyoverthere:5900
przez ustanowione połączenie SSHhopper
źródło
hopper
, a następniehopper
przekazuje cały ruch dooverthere:5900
. Jeślioverthere:5900
nasłuchuje na0.0.0.0
danym interfejsie lub dany interfejs, to zadziała, ale nie, jeśli nasłuchuje127.0.0.1
.Skończyło się na użyciu kilku
~/.ssh/config
hacków SSH, aby tak się stało:Działa to wtedy, gdy próbuję się połączyć
ssh overthere
zsittinghere
, łączy się,hopper
a następnie łączy proxy SSH z portem 22 naoverthere
(tj. SSH włączonyoverthere
).Ma to niesamowite efekty uboczne:
Wszystko działa świetnie i, o ile mogę stwierdzić, 5900 nie jest otwarty
hopper
, tylko przekazywany bezpośrednio zoverthere
dosittinghere
.źródło
apt-get install netcat-traditional -y
). Następnie należy jednoznacznie określićnc
typ w pliku konfiguracyjnym (zastępującnc
znc.traditional
).Możesz przekierować port z
sittinghere
naoverthere
port SSH przezhopper
. Następnie możesz użyć tego portu, aby dotrzećoverthere
bezpośrednio zsittinghere
. W tej drugiej sesji SSH możesz przesłać VNC lub dowolne inne porty, które chcesz, podczas gdyhopper
widzisz tylko zaszyfrowaną sesję SSH.Pierwsza sesja SSH:
Teraz powiedz klienta SSH w jaki sposób można osiągnąć
overthere
dodając ten config~/.ssh/config
nasittinghere
Druga sesja SSH:
Lub zwykła interaktywna sesja SSH bez tunelu portu VNC:
Jeśli nie chcesz zawracać sobie głowy dodawaniem wierszy
~/.ssh/config
, możesz powiedzieć mu, jak połączyć sięoverthere
z wiersza poleceń:... ale bez
HostKeyAlias
SSH nie zweryfikujeoverthere
poprawnie odcisku palca klucza.Wszystkie wiersze poleceń należy uruchamiać
sittinghere
.Nawiasem mówiąc, myślę, że chyba nie trzeba używać
ssh
„s-t
opcję.źródło
Najpierw podłącz zasobnik, wykonując tunel między pracownikiem a komputerem domowym.
następnie zrób ssh ro nad tunelem VNC
Teraz możesz połączyć się z VNC. Przy okazji zmień konfigurację vnc, aby słuchać localhost
źródło
Jeśli używasz klienta VNC
vncviewer
z wiersza poleceń, możesz użyć-via
przełącznika, aby kazał mu przejść przez tuneluser@host
przed połączeniem z serwerem VNC innego hosta.Przykład
Możesz także użyć
vinagre
do połączenia przez tunel SSH, podobnie jak poprzez GUI. Aby to zrobić, skonfiguruj swoje połączenie podobnie do tego w oknie dialogowym połączenia wvinagre
:Co spowoduje, że połączenie zostanie nawiązane, tunelowane przez host tunelu SSH.
Referencje
źródło
Następujące polecenie również powinno działać idealnie
Został przetestowany z dodatkowym parametrem do podłączenia serwera PostgreSQL na
postgres-server
niestandardowym porcie (-p
przełączniku), a także przy użyciu niestandardowej nazwy użytkownika.Jak widać, rozwiązanie jest proste i nie wymaga żadnych zmian konfiguracji ssh ani żadnych pośrednich kroków.
źródło