SSH z powrotem do komputera lokalnego ze zdalnej sesji SSH

12

Próbuję zrobić coś dość niezwykłego (w każdym razie dla mnie) z SSH i nie mogę zmusić go do działania, mam nadzieję, że możesz pomóc.

Chcę ustanowić połączenie ze zdalnym serwerem z mojego komputera Mac za pomocą SSH. Jak na razie dobrze. Teraz trudny bit, po ustanowieniu połączenia ze zdalnym serwerem chcę zainicjować połączenie ze zdalnego serwera BACK z maszyną lokalną. Wiem, szalony. Zasadniczo muszę przeskakiwać przez te obręcze, aby móc przeglądać zdalny serwer, a następnie wysyłać informacje o plikach z powrotem na moją maszynę lokalną, aby mogła ona być obsługiwana przez aplikację na maszynie lokalnej. Mam nadzieję, że to ma sens!

W chwili, gdy po SSH powrócę do komputera lokalnego po zalogowaniu na zdalnym serwerze, terminal będzie po prostu tam siedział i nie będzie żadnych błędów nawet z opcją -v.

Próbuję odkryć, gdzie powinienem dzwonić, patrząc na dane wyjściowe zmiennej $ SSH_CLIENT, ale jestem na standardowym waniliowym połączeniu internetowym (brak statycznego adresu IP). Myślę, że to może być przyczyną problemu.

Rzeczy, które ustaliłem: korzystam z komputera Mac (OS X 10.6.4) i mam włączoną funkcję zdalnego logowania w preferencjach / udostępnianiu systemu. Jeśli spróbuję połączyć się z moim komputerem Mac z innego komputera w sieci LAN, nie mogę się z nim połączyć. Jeśli spróbuję i SSH na innym serwerze (nie na moim komputerze lokalnym) z mojego zdalnego serwera, mogę się połączyć bez żadnych problemów.

Tak więc powyższe fakty każą mi myśleć, że mam jasność co do zapór ogniowych itp. Na komputerach lokalnych i zdalnych.

Jestem pewien, że brakuje mi czegoś oczywistego, ale nie mogę sobie z tym poradzić przez całe życie.

Będziemy wdzięczni za wszelką pomoc, linki lub ogólne podążanie we właściwym kierunku!

i0n
źródło
Możesz przeglądać zdalny serwer za pomocą ssh. A może próbujesz użyć AF? Co powiesz na przekazywanie portów i / lub sftp / scp?
Andreas Rehm,
Cześć. Tak, bez problemów mogę się połączyć i przeglądać strukturę katalogów zdalnego serwera. Przepraszam, nie jestem pewien, co masz na myśli. Zasadniczo plan jest następujący: chcę ssh na mój zdalny serwer Linux z mojego lokalnego komputera Mac, wyszukać plik, a następnie móc przesłać go z powrotem do ustanowionego połączenia (lub wygenerować nowe połączenie na podstawie już ustanowionego), aby komputer lokalny, na którym aplikacja Mac odczyta / edytuje dane przed odesłaniem ich z powrotem na serwer. Nie jestem szczególnie zaniepokojony tym, jak to osiągam, jeśli chodzi o angażowanie innych protokołów.
i0n

Odpowiedzi:

9

Jeśli po ponownym połączeniu się z lokalnym możesz zalogować się przed zawieszeniem, to nie jest odpowiedź. Jeśli nie dojdziesz tak daleko, prawdopodobnie nie wrócisz do komputera Mac (albo nigdzie się nie dostaniesz, albo nie uderzysz w SSH na bramie). Wypróbuj tunel zwrotny (będzie wymagał ustawienia GatewayPorts na Włączone w sshd_config na twoim serwerze, ale uważam, że jest to ustawienie domyślne):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
Powinno to umożliwić normalne połączenie z serwerem, ale także otworzyć tunel, abyś mógł ponownie się połączyć port 2000 (każdy port powyżej 1024 powinien działać), więcyou@yourserver$ ssh -p2000 user@localhost

EDYCJA: Zmieniono nazwę hosta na localhost

James L.
źródło
2
Musisz użyć user @ localhost w ostatnim poleceniu
b0fh
1
To było pomocne, prawie doprowadziło mnie do miejsca, w którym chcę być! Mogę nawiązać połączenie z tunelem zwrotnym, jak wyżej, a następnie ssh z powrotem do mojego lokalnego komputera Mac za pomocą ssh -p 2000 i0n @ localhost. Jak mogę to osiągnąć, nie wiedząc z wyprzedzeniem, że potrzebuję tej funkcji? Innymi słowy z istniejącym i standardowym połączeniem ssh. czy to możliwe?
i0n
Dzięki b0fh, byłem w drodze do łóżka, kiedy napisałem, że =) i0n - instynktownie chcę powiedzieć, że nie możesz zmodyfikować istniejącego połączenia, aby to zrobić, ale PuTTY może to zrobić, więc musi być jakiś sposób. Zawsze możesz wysłać nowe połączenie SSH z tunelem, gdy potrzebujesz odpytać, ale przypuszczam, że zostanie to zrobione programowo, więc może to nie być możliwe. Spójrz Spodziewaj się - jeśli jakikolwiek język będzie gotowy na SSH, to będzie to.
James L
2

Czy twój komputer lokalny jest dostępny z serwera? Czy potrafisz pingować? Proszę o to, ponieważ to, co robisz, powinno działać, jeśli twój komputer jest dostępny. Twój serwer jest w Internecie lub w sieci LAN, w tej samej podsieci?

W każdym razie, jeśli potrzebujesz tylko edytować plik, dlaczego po prostu nie używasz scp do skopiowania pliku na komputer lokalny? Możesz użyć ssh, aby wyszukać plik na zdalnym serwerze, a gdy masz jego ścieżkę, wprowadź na komputerze lokalnym (w innym terminalu):

scp user@server:/path/to/file/on/server /local/path/to/save/file

Aby przywrócić plik, scp ponownie przełącza ścieżki.

Obs: nie potrzebujesz początkowego połączenia ssh, aby użyć scp - utworzy to nowe

Powyższe dotyczy sytuacji, gdy musisz uzyskać do niego dostęp w terminalu. W systemie Linux (i na pewno na Macu, ale nie wiem, jak to zrobić), możesz zamontować zdalną lokalizację ssh w sieci i używać połączenia tak, jak używasz dysku lokalnego (jest to sftp, a połączenie ma postać: sftp://user@server:/path/to/mounti myślę, że tego właśnie potrzebujesz zamiast zdalnego połączenia terminalowego, aby móc edytować plik bezpośrednio za pomocą aplikacji Mac.

Laurent
źródło
1

Możesz także rzucić okiem sshfs(potrzebujesz do tego MacFuse ). Umożliwia to montowanie katalogów na zdalnym komputerze i uzyskiwanie do nich dostępu tak, jak zwykłych folderów na komputerze. Ponadto możesz nadal korzystać sshz komputera i tworzyć / wyszukiwać potrzebne pliki. Przesyłanie ich byłoby wtedy tak proste, jak przesyłanie plików lokalnych.

Bran the Błogosławiony
źródło