W domu mam wiele maszyn, do których chciałbym uzyskać dostęp ze szkoły za pomocą SSH i VNC. W tym celu podałem im statyczne adresy IP:
- 192.168.1.50: Windows
- 192.168.1.51: Ubuntu
- 192.168.1.52: Raspberry Pi / Raspbian
Wiem, że SSH używa portu 22, więc mogę przekierować ten port do 192.168.1.51:22 na moim routerze, ale w ten sposób nie będę mógł SSH do mojego Raspberry Pi. Czy jest jakiś sposób na skonfigurowanie tego, aby mieć dostęp do obu komputerów?
networking
ssh
port-forwarding
acourchesne
źródło
źródło
Odpowiedzi:
Jeśli masz IPv6, nie potrzebujesz nawet przekierowania portów! Po prostu zdobądź swój stały adres IPv6 (na podstawie twojego adresu MAC, więc gwarantuje to, że pozostanie taki sam, chyba że twój dostawca usług internetowych nie wie, jak działa IPv6) i użyj go do tunelowania. Ponieważ twój adres IPv6 jest publiczny i pozwala światu aby uzyskać do ciebie dostęp bez konieczności przechodzenia przez lokalny NAT, nie musisz zawracać sobie głowy włączaniem przekierowania portów w dowolnym miejscu. „Po prostu zadziała”.
Należy jednak pamiętać, że IPv6 nadal nie jest tak naprawdę obsługiwany na całym świecie, a zarówno domowe połączenie internetowe, jak i zdalne połączenie internetowe muszą mieć w pełni działający protokół IPv6, aby to zrobić.
Jednak jeśli jesteś podobny do większości ludzi i masz tylko IPv4, nadal istnieje sposób! Niektóre routery umożliwiają przekazywanie określonych portów źródłowych do określonych portów docelowych, na przykład:
W tym przykładzie, port
22
jest przekazywana bezpośrednio do mojego komputerasheepdog
, a port292
jest przekazywany do portu22
nacoyote
.Wreszcie, jeśli router nie ma tej funkcji, możesz po prostu zmienić port, ponieważ SSH nie ogranicza się tylko do działania na porcie
22
. Możesz ustawić dowolną wartość (która nie jest używana).W
/etc/ssh/sshd_config
(potrzebujesz roota do edycji, więcsudo nano /etc/ssh/sshd_config
), u góry pliku znajduje się wiersz:Zmień to na cokolwiek chcesz:
Uruchom ponownie serwer SSH za pomocą
sudo service ssh restart
i przekieruj port na routerze.Jednak w tym przypadku użycia rozważę, czy tunele SSH są właściwe. Być może powinieneś skonfigurować dedykowany serwer VPN w sieci domowej? Umożliwi to dostęp do całej sieci domowej z dowolnego miejsca, pod warunkiem posiadania odpowiednich poświadczeń bezpieczeństwa wymaganych przez VPN. Dodatkowo VPN jest nieco mniej obciążony; zazwyczaj wystarczy przekierować tylko jeden port dla jednego komputera.
źródło
Prostym sposobem rozwiązania tego problemu jest zmapowanie różnych portów routera na port 22 komputerów. Na przykład możesz skonfigurować następujące ustawienia routera (zakładając, że router ma adres IP
1.2.3.4
)Następnie, gdy używasz ssh, określ port, którego chcesz użyć, wpisując
Teraz powinieneś być w stanie połączyć się ze wszystkimi swoimi maszynami.
źródło
Jeśli wiesz, że jeden z komputerów jest zawsze włączony, możesz również użyć go jako serwera proxy ssh.
powiedzmy, że masz skonfigurowaną nazwę domeny dla zewnętrznego adresu IP (tj. myhome.dyndns.com lub cokolwiek innego), to co zrobisz, to połącz się na jednym komputerze (powiedzmy, że malina jest zawsze aktywna, a port jest przesyłany z routera do it), twoje połączenia ssh będą:
szkoła -> (router, tutaj przezroczysty) -> malinowy -> ubuntu lub windows
teraz w swoim ~ / .ssh / config w szkole dodaj linie:
Aby się następnie połączyć:
Od teraz, jeśli wpiszesz ssh ubuntu, komputer najpierw połączy się z maliną, a następnie rozpocznie sesję ssh z komputerem ubuntu.
Polecam ci, bez względu na port, który wybierzesz przekazywać dalej, aby wyłączyć hasło w /etc/sshd.conf, aby umożliwić logowanie tylko za pomocą klucza ssh. W ten sposób, jeśli ustawisz klucz na malinie i na Ubuntu, z parametrem „ForwardAgent”, będziesz musiał tylko odblokować klucz, a następnie żadne hasło nie będzie wymagane do połączenia. W ten sposób, nawet jeśli boty próbują zalogować się na twoim ssh, nigdy nie będą mogły się zalogować, ponieważ nie zezwalasz na logowanie za pomocą hasła.
Bonus, działa również z scp, scp foo ubuntu: / tmp / foo użyje tej samej konfiguracji bez dalszych parametrów. Bonus 2, ta konfiguracja nie wymaga żadnych zmian w domu, jeśli jutro ty i inny komputer, po prostu skopiuj / wklej kod w konfiguracji ssh, zmień hosta i ip, to wszystko, nie trzeba otwierać nowego portu na routerze
źródło
Robię to - pozostawiam rpi włączony i cały czas podłączam się bezpośrednio do routera (ponieważ jest najtańszy do uruchomienia) i po prostu ssh do niego, a następnie odbijam się od innych - to nigdy nie wymaga dużej uwagi.
Możliwe jest również VNC / RDP GUI przez potok SSH, trochę zabawnie lub przekierowanie portu, który pozwala przeglądać serwer na komputerze stacjonarnym, zachowując przy tym prywatność.
Powodem, dla którego dodałem tę odpowiedź, jest podanie kilku sugestii.
1) Użyj innego portu niż 22. Możesz zostawić 22 na PI, ale zmień port przychodzący na routerze na ponad 10 000 ... W przeciwnym razie dostaniesz dziesiątki do setek ataków dziennie - i kiedy to zrobisz wiadomo, że prowadzi host SSH, gdy tylko zostanie znaleziony exploit, jesteś właścicielem.
2) Użyj certyfikatów zamiast nazwy użytkownika / hasła - całkowicie wyłącz logowanie nazwy użytkownika / hasła.
3) Jeśli twój adres IP może się zmienić, skorzystaj z usługi typu dyndns, aby uzyskać sobie nazwę hosta DNS (używam noip, jest bezpłatny i obsługują klienta Linuksa w celu aktualizacji twojego adresu IP - myślę, że możesz po prostu apt-get na pi teraz). Jest jeszcze kilka innych firm, które oferują to za darmo.
4) Aktualizuj swoje pi (lub cokolwiek, do czego ssh) na bieżąco (sudo apt-get update). Wierzę, że ssh jest już dość dobrze sprawdzony, ale wierzyłem też, że https ...
źródło
Wątpiłem, czy lepiej by to pasowało jako komentarz niż odpowiedź, ale i tak opublikuję tutaj.
Kilka rzeczy, o których powinieneś pomyśleć przed zrobieniem tego:
źródło