Konfiguracja SSH przez Internet na moim Pi

16

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.

  1. Zacząłem od aktywacji SSH na Pi, uruchamiając Raspbian, używając tego raspi-confignarzędzia.
  2. Następnie zainstalowałem klienta no-ip.com na moim Pi, aby nazwa hosta wskazywała na mój dynamiczny adres IP.
  3. Za pomocą malin sprawdziłem IP mojego LAN ifconfig
  4. 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?

Zeta
źródło
Podaj wynik działania iptables -Lswojego Pi.
deed02392
1
Czy rozwiązałeś już ten problem? Jeśli tak, czy mógłbyś oznaczyć odpowiedź, która ją rozwiązała, lub stworzyć odpowiedź na pytanie, co zrobiłeś, a następnie oznaczyć jako odpowiedź? Byłoby wspaniale, ponieważ staramy się zwiększyć stronę P: Współczynnik wzrostu i wydaje się, że to pytanie pozostało przez jakiś czas nietknięte przez Ciebie @Zeta. Dzięki!
RPiAwesomeness
Korzystam z no-ip.com, aby połączyć się z moim Pi przez Internet dla Internetu i ssh, więc jest to możliwe, może twój router lub dostawca usług internetowych blokuje ruch przychodzący?
Alastair Montgomery
To brzmi bardzo podobnie do routera, który nie obsługuje pętli NAT.
płatek śniegu
znalazłem ten link: raspberryanywhere.com Być może może być pomocny. Korzystam z usługi od kilku tygodni i działa świetnie! Link zapewnia prosty program do przeglądania zespołu, taki jak dostęp do tablicy malin w dowolnym miejscu. Ponadto możesz użyć zwykłego klienta SSH; podają tylko wirtualny adres, aby połączyć się z tablicą za pośrednictwem SSH lub HTTP. Na pewno warto spróbować!
Stefano Stefano

Odpowiedzi:

12

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.

Slubbix
źródło
Właśnie miałem ten problem i korzystałem z servo.net nawet łatwiej niż ngrok. Całkowicie za darmo, 0 config wystarczy wkleić w komendzie 22 port z niestandardowym aliasem, a następnie połączyć.
Madhava Jay
3

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:

  1. Połącz się z Pi za pośrednictwem SSH w sieci domowej lub za pomocą ekranu, albo działa.

  2. Weź długopis i papier, a będziesz zapisywać informacje.

  3. 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). . . .

    eth0      Link encap:Ethernet  HWaddr b8:27:eb:b3:fc:2c
              inet addr:192.168.1.81  Bcast:192.168.1.255  Mask:255.255.255.0
    

    Zapisz następujące informacje ...

    inet addr – 192.168.1.81 (Pi's Current IP Address)
    Bcast –  192.168.1.255 (The Broadcast IP Range)
    Mask –  255.255.255.0 (Subnet Mask Address)
    

    Oczywiście twoje informacje będą się różnić od tego samouczka, więc upewnij się, że używasz swoich informacji z ifconfigpolecenia uruchomionego na Pi.

  4. Teraz uruchom netstat -nrlub route -n. Potrzebujemy:

    Adres „bramy” - 192.168.1.254
    Adres docelowy” - 192.168.1.0

  5. 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:

    plik interfejsów

  6. Zmień linię:

    iface eth0 inet dhcp
    

    do

    iface eth0 inet static
    

    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 ). . . .

    address 192.168.1.81
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.254
    

    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.

  7. Uruchom, sudo reboota twoje IP powinno być na swoim miejscu! Zaloguj się ponownie i ifconfigponownie uruchom komendę, a teraz powinno to wyglądać tak:

    fantazja!

Następnie skonfiguruj przekierowanie portów do nowego statycznego adresu IP i wszystko powinno działać! Powodzenia!

RPiAwesomeness
źródło
2
Czy osoba, która głosowała w dół, może wyjaśnić, dlaczego? Myślę, że jest to całkowicie poprawne i wykonalne rozwiązanie. Chciałbym wiedzieć, dlaczego, więc mogę poprawić swoją odpowiedź.
RPiAwesomeness
1
Działa to tylko w sieci lokalnej, a nie z zewnątrz. OP zapytał, jak połączyć się z Pi przez Internet, a nie z tej samej sieci.
Chinmay Sarupria,
Adres taki jak 192.168.1.100 to adres lokalny, mógłbym mieć 2 Pi w 2 różnych częściach miasta z tym samym adresem lokalnym. Oczywiście nie będę mógł uzyskać dostępu do żadnego z nich spoza sieci.
Chinmay Sarupria,
Jeśli nadasz swojemu RPi statyczny adres IP, powinieneś wykluczyć go z puli DHCP, w przeciwnym razie inne urządzenie w twojej sieci może go uzyskać i będziesz mieć konflikt IP.
Dmitrij Grigoryjew
2

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.

Huygens
źródło
0

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?

Samadi
ź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.
RPiAwesomeness
@RPiAwesomeness Przepraszamy, nie wiedziałem o tym.
Samadi
Nie ma problemu. Właśnie wypełniałem swój obowiązek bycia członkiem Stack Exchange i moderowaniem strony. To tylko trochę pomocnej krytyki. Nie traktujcie tego jako napaść na was, staram się tylko, aby treść na tej stronie była użyteczna i zawierała informacje. Staraj się nadal pomagać i odpowiadać na pytania oraz brać udział, zaczniesz je otrzymywać. :) Od czasu do czasu wchodź na czat. Ludzie, którzy w nich uwielbiają mieć towarzystwo, a to pokazuje, że ta strona jest przydatna i dobrze prosperująca oraz ma dobrą, zaangażowaną bazę użytkowników.
RPiAwesomeness
0

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.

toomanyhours
źródło
0

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ą poleceniaifconfig

Wouter van der Put
źródło
0

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:

Uruchom Pi do monitu o terminal. Wpisz następujące polecenie „sudo apt-get install xrdp” Jeśli promowane, wprowadź hasło (domyślnie jest to „malina”) Wpisz „Y” i naciśnij klawisz enter. To teraz instaluje xrdp na twoim Pi, czyli oprogramowaniu, którego będziemy używać do połączenia ze zdalnym pulpitem. Poczekaj na zakończenie. Uruchom ponownie swoje Pi. Sprawdzimy, czy xrdp uruchomi się automatycznie. Po uruchomieniu Pi w wierszu polecenia poszukaj [ok] Uruchamianie serwera protokołu pulpitu zdalnego: xrdp sesman. To pokazuje, że xrdp jest zainstalowany i automatycznie uruchamia się przy uruchomieniu twojego Pi. Ostatnim krokiem jest zanotowanie adresu IP twojego Pi, który powinien być również wyświetlony na ekranie startowym. W moim przypadku poniżej jest to 192.168.1.9.

Konfiguracja drugiego komputera

  1. Uruchom Podłączanie pulpitu zdalnego, które można znaleźć w Start-> Wszystkie programy-> Akcesoria-> Podłączanie pulpitu zdalnego
  2. Wpisz adres IP swojego pi, który zanotowałeś powyżej.

  3. Kliknij Połącz (na tym etapie może pojawić się ostrzeżenie dotyczące bezpieczeństwa, po prostu kliknij OK, jeśli to zrobisz. W końcu to Twoje Pi w sieci, więc nie martw się o bezpieczeństwo).

  4. Pozostaw moduł w ustawieniach domyślnych sesman-Xvnc i wprowadź swoją nazwę użytkownika i hasło do swojego Pi. (Domyślnie jest to pi i malina, jeśli ich nie zmieniłeś).

  5. Kliknij OK i po kilku chwilach powinieneś przywitać mój pulpit Raspberry Pi!

  6. Po zakończeniu wyloguj się z pulpitu Pi.

Znalazłem te kroki stąd i zadziałały dla mnie

Oto inny sposób korzystania z SSH:

SSH do Raspberry Pi Generalnie loguję się do mojego Raspberry Pi przez SSH lub Secure Shell, aby nadać mu pełną nazwę. Umożliwia to dostęp do linii Raspberry Pi z poziomu wiersza poleceń z innego komputera. Chociaż możliwe jest SSH do Raspberry Pi z dowolnego miejsca na świecie, a ja robię, ten post dotyczy tylko dostępu SSH przez sieć lokalną. Omówię zdalne połączenie w przyszłym wpisie na blogu.

Chociaż nie daje to dostępu do GUI (graficznego interfejsu użytkownika), dostęp do wiersza poleceń ogólnie pozwala mi zrobić 95% tego, co muszę zrobić. Pozostałe 5% prawdopodobnie mógłbym zrobić przez SSH, ale czasami nie możesz pobić wygody GUI. :-)

Przede wszystkim musisz znać adres IP Raspberry Pi, na który chcesz się zalogować. Jeśli nie masz pewności, jak to znaleźć, przeczytaj mój post na blogu wyjaśniający, jak możesz to zrobić zdalnie za pomocą doskonałego narzędzia o nazwie nmap.

Przeniesienie SSH do twojego Raspberry Pi z komputera z systemem Linux lub Apple Mac jest bardzo łatwe. Możesz po prostu wpisać nazwę użytkownika i adres IP w wierszu polecenia, używając następującego formatu:

nazwa użytkownika ssh @ adres IP

Upewnij się, że zastąpiłeś nazwę użytkownika nazwą użytkownika, za pomocą którego chcesz zalogować się do komputera zdalnego. Adres IP powinien mieć format 192.168.1.66

Może pojawić się komunikat wyjaśniający, że nie można ustalić autentyczności hosta i jeśli jesteś pewien, że chcesz kontynuować połączenie. Ten komunikat zobaczysz tylko przy pierwszym SSH w Raspberry Pi. Po prostu wpisz „tak”.

Zostaniesz poproszony o podanie hasła, wprowadź hasło dla nazwy użytkownika, z którą próbujesz się połączyć.

W przypadku systemu Windows jest to nieco trudniejsze do skonfigurowania, ponieważ wymaga dodatkowego oprogramowania o nazwie PuTTY. Jednak po zainstalowaniu jest bardzo prosty w użyciu.

Najpierw przejdź do strony PuTTY, www.putty.org, pobierz i zainstaluj oprogramowanie.

Po zainstalowaniu załaduj PuTTY

W polu Nazwa hosta (lub adres IP) wpisz adres IP, z którym chcesz się połączyć. Wybierz przycisk radiowy SSH. W polu pod Zapisanymi sesjami wpisz nazwę identyfikującą ten komputer, na przykład Raspberry Pi, a następnie kliknij Zapisz. Kliknięcie przycisku Otwórz powinno teraz rozpocząć sesję SSH.

Następnym razem, gdy będziesz chciał połączyć się SSH z Raspberry Pi, wystarczy załadować PuTTY, kliknij zapisaną sesję, aby ją podświetlić, a następnie kliknij Otwórz. Po wpisaniu hasła, gdy zostaniesz o to poproszony, będziesz mieć zdalny dostęp do swojego Raspberry Pi.

Znalazłem te instrukcje stąd

Człowiek
źródło
Nie widzę, w jaki sposób te instrukcje pomagają uzyskać dostęp do RPi przez Internet
Dmitrij Grigoriew
0

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.

Austinthemighty
źródło
0

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.

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Wracając do powyższej listy, możesz zobaczyć, że mówi to iptables:

  1. dołącz tę regułę do łańcucha wejściowego ( -A INPUT), abyśmy spojrzeli na ruch przychodzący
  2. sprawdź, czy jest to TCP ( -p tcp).
  3. jeśli tak, sprawdź, czy dane wejściowe są przesyłane do portu SSH ( --dport ssh).
  4. jeśli tak, zaakceptuj input ( -j ACCEPT).

Mam nadzieję, że działa to dla ciebie też może chcesz dodać porty ftp, które są 20-21, wystarczy zmienić sshna 20i 21.

Austinthemighty
źródło
0

Nie jestem pewien, czy to pytanie wymaga dodatkowych odpowiedzi, ale jest dość proste.

  1. Zainstaluj OpenSSH lub włącz go z raspi-config

  2. Przejdź do strony głównej routera / zapory w moim przypadku 192.168.1.1

  3. 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

  4. Po skonfigurowaniu po stronie routera zanotuj adres IP sieci WAN, wyszukując adres IP w Google.

  5. 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@mywanipwpisuję 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.

Hani Umer
źródło
-1

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.

alkopop79
źródło
Zapomniałem wspomnieć: ustaw przekierowanie portów na routerze!
alkopop79,
1
FYI: Wygląda na to, że ten projekt został przerwany.
bobstro