To może być proste pytanie, ale ponieważ przeczytałem sprzeczne informacje z kilku źródeł (co? Sprzeczności w Internecie?), Chciałem wiedzieć, czy zrobiłem wszystko, co powinienem.
Chcę więc skonfigurować połączenie SSH z moim RasPi, aby móc uzyskać do niego dostęp przez Internet.
- Zacząłem od aktywacji SSH na Pi, uruchamiając Raspbian, używając tego
raspi-config
narzędzia. - Następnie zainstalowałem klienta no-ip.com na moim Pi, aby nazwa hosta wskazywała na mój dynamiczny adres IP.
- Za pomocą malin sprawdziłem IP mojego LAN
ifconfig
- Wreszcie, w narzędziu konfiguracyjnym routera, w ramach przekierowywania portów, włączyłem przekierowywanie portu 22 zarówno w TCP, jak i UDP na lokalny adres IP mojej pi.
Po tym nie mogę wysyłać SSH do mojego komputera przez Internet. Działa, gdy próbuję połączyć się z siecią LAN za pomocą lokalnego adresu IP, ale nie używam nazwy hosta ani internetowego adresu IP. Próbowałem także połączyć się z innej lokalizacji i nic nie działa.
Moje pytanie: Czy brakuje mi jakichś kroków? Czy są jakieś pliki konfiguracyjne, które powinienem edytować na moim pi, aby wszystko działało?
iptables -L
swojego Pi.Odpowiedzi:
Jeśli planujesz połączyć się z Raspberry Pi tylko przez SSH przez Internet, prawdopodobnie ngrok.com może najlepiej dopasować się do twojego problemu.
Przesyła twój port (y) za pomocą pewnego rodzaju odwróconego tunelu, a nawet może pomóc ominąć zapory ogniowe lub ograniczenia twojego dostawcy usług internetowych. Musisz zarejestrować się (za darmo) na stronie, aby przekazywać ruch TCP.
Nie jestem w żaden sposób związany z tym projektem; Po prostu wykorzystałem go, aby zrealizować ten sam pomysł (w moim przypadku przekazanie serwera OpenVPN) i jak dotąd nie napotkałem żadnych problemów.
źródło
Częścią problemu może być to, że ponieważ Pi używa dynamicznego adresu IP z DHCP na routerze, skonfigurowane przekierowanie portów nie działa, ponieważ lokalny adres IP Pi został zmieniony.
Najprostszym sposobem, aby to naprawić (przynajmniej to, co widziałem), jest ustawienie statycznego adresu IP. Jest to stosunkowo proste, o ile nie przeszkadza ci chowanie się w pliku konfiguracyjnym. Możesz przeczytać trochę więcej tutaj i tutaj . Wyjaśnię również prosty sposób poniżej:
Połącz się z Pi za pośrednictwem SSH w sieci domowej lub za pomocą ekranu, albo działa.
Weź długopis i papier, a będziesz zapisywać informacje.
Uruchom polecenie
ifconfig
. Wiem, że już go uruchomiłeś, ale tym razem musimy zebrać trochę więcej informacji niż lokalny adres IP. Ujawnia to informacje o routerze, bit, który chcesz po et0 (połączenie Ethernet). . . .Zapisz następujące informacje ...
Oczywiście twoje informacje będą się różnić od tego samouczka, więc upewnij się, że używasz swoich informacji z
ifconfig
polecenia uruchomionego na Pi.Teraz uruchom
netstat -nr
lubroute -n
. Potrzebujemy:Adres „bramy” - 192.168.1.254
„ Adres docelowy” - 192.168.1.0
Teraz, gdy mamy te informacje, możemy edytować plik interfejsów, aby skonfigurować dynamiczny adres IP. Uruchom
sudo nano /etc/network/interfaces
. Powinno to wyglądać mniej więcej tak:Zmień linię:
do
Następnie bezpośrednio poniżej tego wiersza wprowadź następujące informacje ( Uwaga. Będziesz potrzebować własnych adresów, które zebraliśmy powyżej ). . . .
Zasadniczo częścią adresową jest adres IP. Im wyższa, tym lepiej, ponieważ istnieje mniejsze prawdopodobieństwo konfliktu IP. netmask - Adres maski, który zapisaliśmy wcześniej.
sieć - adres IP routera, adres „docelowy” został znaleziony wcześniej. Możesz także pobrać to z routera, powinno to być gdzieś na boku.
broadcast - Adres „Bcast”, który zapisaliśmy wcześniej.
brama - to adres „bramy”, który znaleźliśmy wcześniej.
Naciśnij Ctrl+ Oi albo Enteralbo Ya potem Enter. Po zakończeniu naciśnij Ctrl+ X.
Uruchom,
sudo reboot
a twoje IP powinno być na swoim miejscu! Zaloguj się ponownie iifconfig
ponownie uruchom komendę, a teraz powinno to wyglądać tak:Następnie skonfiguruj przekierowanie portów do nowego statycznego adresu IP i wszystko powinno działać! Powodzenia!
źródło
Jedyną rzeczą, którą prawdopodobnie źle skonfigurowałeś, jest to, że SSH jest protokołem wyłącznie TCP, więc nie musisz przekierowywać ruchu UDP na porcie 22.
Teraz wydaje się, że to nie działa, prawdopodobnie dlatego, że router nie obsługuje pętli NAT . Oznacza to, że reguły NAT (na przykład dotyczące przekazywania) nie mają zastosowania, gdy źródło połączenia pochodzi z wewnętrznej sieci LAN. Nie wszystkie routery mają tę funkcję WŁĄCZONĄ. Zatem jeśli twój router nie obsługuje pętli NAT, to nie będziesz w stanie połączyć się z RPi za pomocą SSH, kiedy używasz nazwy domeny no-ip.com i robisz to z twojej sieci LAN .
Aby sprawdzić, czy konfiguracja działa, jeśli masz smartfon z pewnym połączeniem danych (3G, LTE itp.) I jest na nim klient ssh, spróbuj połączyć się z RPi za pomocą planu danych, a nie połączenia Wi-Fi. Jeśli nie masz na nim klienta ssh i możesz wykonywać tethering, użyj smartfona razem z jednym komputerem, odłączając go od sieci lokalnej i używając zamiast tego łącza tethering.
źródło
Spróbuj użyć darmowej nazwy domeny, na przykład co.cc lub podobnej, oraz freeDNS (dostarczają również szeroki zakres subdomen), aby wskazać router. Myślę, że możesz także otrzymać skrypt aktualizacji na wypadek, gdyby Twój router miał dynamiczny adres IP.
Jeśli to nie zadziała, być może ustawienia przekierowania portów są nieprawidłowe? Jaki masz router?
źródło
Try using a free domain name...
Zrobił to, właśnie tym jest klient no-ip. Jest to o wiele prostsze niż konieczność bałaganu dzięki ręcznemu DNSingowi i routerom.Mam taką sytuację tutaj w Finlandii: rpi jest podłączony do mobilnego routera Wi-Fi, Huawei E5776, i chcę połączyć się z rpi za pomocą SSH przez Internet, jak dotąd bez powodzenia i wreszcie wiem, że to mój dostawca usług internetowych blokuje połączenia dwukierunkowe dla klienci mobilnego internetu szerokopasmowego. Dwukierunkowy ruch jest dla nich dodatkową usługą (za którą trzeba zapłacić) o nazwie open gate przez mojego dostawcę usług internetowych. Przejdź więc na własną stronę ISP, aby sprawdzić, czy tak jest.
źródło
Slubbix wskazał na możliwy problem, że lokalny adres IP Raspberry Pi nie jest naprawiony. To spowodowałoby, że port przekierowania w routerze byłby zawodny. Domyślnie Raspberry Pi jest skonfigurowany do korzystania z DHCP. Oznacza to, że router podaje adres IP. Ten adres IP również domyślnie nie jest stały.
Jedno rozwiązanie tego problemu jest już wskazane przez Slubbix : aby naprawić adres IP Raspberry Pi.
Moim zdaniem ma to dwie wady: nie ma łatwej w utrzymaniu globalnej listy adresów IP w twojej sieci i nie możesz używać swojego Raspberry Pi w innej sieci (adres IP jest już w użyciu lub w innym zadaniu).
Dlatego proponuję wykonać następujące czynności: skonfiguruj router, aby przypisał stały adres IP do adresu MAC twojego Raspberry Pi. Adres MAC można znaleźć za pomocą polecenia
ifconfig
źródło
Lokalny adres IP Raspberry Pi nie jest stały, chyba że do połączenia używasz adaptera bezprzewodowego, który zachowa jego adres IP. Jeśli chcesz użyć SSH do RPI, możesz wykonać następujące kroki:
Znalazłem te kroki stąd i zadziałały dla mnie
Oto inny sposób korzystania z SSH:
Znalazłem te instrukcje stąd
źródło
Jedną z rzeczy, które zauważyłem w moim Internecie, jest to, że kiedy przekierowałem mój serwer WWW i próbowałem połączyć się z nim za pomocą mojego publicznego adresu IP, powiedziałoby to, że nie jest ono dostępne, ale kiedy łączę się z nim przez telefon lub sieć mojej szkoły Jestem w stanie się z nim połączyć, a także jedną z rzeczy, które możesz spróbować zrobić, to przejść do Google i wpisać „IP” w pasku wyszukiwania, skopiować ip, który on daje, a następnie przejść do tłumaczenia go i wkleić w ip, i następnie kliknij niebieski adres IP w prawym oknie, co powinno pokazać, jeśli pomyślnie przeportowałeś serwer WWW.
źródło
Aby zezwolić na ruch przychodzący na domyślnym porcie SSH (22), możesz powiedzieć iptables, aby zezwalał na cały ruch TCP na tym porcie.
Wracając do powyższej listy, możesz zobaczyć, że mówi to iptables:
-A INPUT
), abyśmy spojrzeli na ruch przychodzący-p tcp
).--dport ssh
).-j ACCEPT
).Mam nadzieję, że działa to dla ciebie też może chcesz dodać porty ftp, które są 20-21, wystarczy zmienić
ssh
na20
i21
.źródło
Nie jestem pewien, czy to pytanie wymaga dodatkowych odpowiedzi, ale jest dość proste.
Zainstaluj OpenSSH lub włącz go z
raspi-config
Przejdź do strony głównej routera / zapory w moim przypadku 192.168.1.1
Wyszukaj przekierowanie portów lub serwery wirtualne i dodaj coś takiego:
Początek portu zewnętrznego: 1234 Koniec portu zewnętrznego: 1234
Port wewnętrzny start i koniec 22.
Adres IP serwera to statyczny adres IP twojego RPi w moim przypadku 192.168.1.50
Po skonfigurowaniu po stronie routera zanotuj adres IP sieci WAN, wyszukując adres IP w Google.
Teraz powinieneś być w stanie SSH do pi przez Internet. W moim przypadku używam Chromebooka i dodatkowej bezpiecznej powłoki. W moim przypadku
pi@mywanip
wpisuję nazwę użytkownika i port 1234.Zasadniczo reguła zapory w kroku 3 przekazuje cały ruch na porcie 1234 adresu IP sieci WAN do portu 22 wewnętrznego adresu IP sieci LAN.
źródło
Miałem dużo problemów z konfiguracją SSH przez Internet, dopóki nie znalazłem tej prostej metody:
http://raspctl.com
Wystarczy zarejestrować i skopiować i wkleić polecenia. Być może trzeba edytować plik konfiguracyjny, ale to wszystko. Testowałem to dzisiaj i działa jak urok. Próbowałem też z różnymi aplikacjami SSH na Androida.
źródło