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!
źródło
Odpowiedzi:
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ęc
you@yourserver$ ssh -p2000 user@localhost
EDYCJA: Zmieniono nazwę hosta na localhost
źródło
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):
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/mount
i myślę, że tego właśnie potrzebujesz zamiast zdalnego połączenia terminalowego, aby móc edytować plik bezpośrednio za pomocą aplikacji Mac.źródło
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ćssh
z komputera i tworzyć / wyszukiwać potrzebne pliki. Przesyłanie ich byłoby wtedy tak proste, jak przesyłanie plików lokalnych.źródło