Jak korzystać z SSH poza siecią domową

16

Niedawno skonfigurowałem SSH na moim Raspberry Pi. Wszystko idzie płynnie, zwłaszcza że mogę sterować komputerem za pomocą iPhone'a za pomocą aplikacji Server Auditor . Niestety działa to tylko przez sieć lokalną.

Jak mogę sprawić, by moje SSH działało, kiedy jestem poza domem? (Najlepiej działa z aplikacją).

xxmbabanexx
źródło
czy możesz przekierować port z routera?
SteveIrwin
1
@ SteveIrwin Najprawdopodobniej mogę, ale ponieważ nie mam umiejętności obsługi sieci, wolałbym łatwe rozwiązanie, takie jak Mapa Portu . Właściwie ... jeśli podzielę internet mojego komputera Mac z moim Pi, czy będę w stanie udostępnić przekierowane porty?
xxmbabanexx
1
skonfigurowanie przekierowania portów jest prawdopodobnie co najmniej tak proste, jak użycie mapy portów. Musisz powiedzieć nam więcej o tym, jak twoja sieć LAN jest skonfigurowana
John La Rooy
Najlepszym rozwiązaniem jest zainstalowanie usługi Weaved (www.weaved.com) i załatwienie jej. Wszystkie inne samouczki, które znajdziesz w Internecie, poprowadzą Cię na frustrującą drogę.
IgorGanapolsky
w poście, który sugeruje użycie socketxp, skorzystaj z poniższego, aby pobrać socketxp w curl RPI -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin zamiast Linux plik.
jeonghoon

Odpowiedzi:

20

Oto kroki, których użyłem (w debianie), które mogą okazać się przydatne.

1.Ustawianie statycznego adresu IP dla Pi.

a. Otwórz plik interfejsów za pomocą polecenia

sudo nano /etc/network/interfaces

b. Zmień plik interfejsów na następujący (to działa dla mnie, nie jestem pewien, czy można wykluczyć kilka linii).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c. Sprawdź, czy Ip został zmieniony za pomocą komendy ifconfig

2.Ustawienie dynamicznego DNS

Najprawdopodobniej adres IP przypisany przez twojego dostawcę usług internetowych jest dynamiczny, dlatego potrzebujemy sposobu, aby rozwiązać zmiany w adresie IP. Aby to osiągnąć, używam oprogramowania dnsdynamic i ddclient. Oba są bezpłatne.

a. Zarejestruj konto w dnsdynamic

b. Dodaj nową domenę i wybierz nazwę oraz domenę z listy. Możesz wybrać dowolną z dostępnych domen z wybraną subdomeną. Kliknij opcję wyboru dostępności, a następnie dodaj

zrzut ekranu dnsdynamic

3.Ustawienie ddclient na Pi

a. Zainstaluj ddclient za pomocą polecenia

sudo apt-get install ddclient

b. Otwórz plik konfiguracyjny dla ddclient za pomocą następującego polecenia i dodaj następujące wiersze.

sudo nano /etc/ddclient.conf

i zmień plik na następujący.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
[email protected]  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

i zapisz plik.

d. Chcemy, aby usługa ddclient uruchamiała się automatycznie po ponownym uruchomieniu, więc wykonaj następujące czynności.

sudo nano /etc/rc.local

Dodaj następujące polecenie przed wyjściem 0 (który jest ostatnim wierszem)

sudo /usr/sbin/ddclient -daemon 600 -syslog

Zapisz plik. Aby uruchomić program ddclient, uruchom ponownie komputer pi lub wykonaj powyższe polecenie w wierszu polecenia. Będzie on aktualizował nazwę Twojej domeny, zmieniając aktualny adres IP w razie potrzeby.

4. Przekazywanie portów

a. Znajdź model swojego routera.

b. Przejdź do portforward.com

c. Wprowadź markę i model routera, aby znaleźć szczegółowy przewodnik na temat portu przesyłania.

d. Po wybraniu marki i modelu routera kliknij Przewodnik domyślny na przekierowanej stronie.

e. W polu tekstowym statycznego IP wprowadź statyczny adres IP pi podanego w kroku 1.

f. Postępuj zgodnie z instrukcjami i przekieruj port 22. Port źródłowy musi mieć numer 22, a port docelowy może być dowolny. Pamiętaj, aby używać portu docelowego podczas sshing do pi. Aby uniknąć pomyłek, zwykle używam tego samego źródła i miejsca docelowego Port.

Jeśli postępujesz zgodnie z samouczkiem, zaloguj się do pi z dowolnego miejsca, zastępując adres IP nazwą domeny. np. używam [email protected]: 22 do ssh do mojej pi.

SteveIrwin
źródło
Dzięki wielkie! Kiedy wrócę z wizyty w Exeter, wypróbuję to!
xxmbabanexx
+1 Świetna odpowiedź, jednak czy naprawdę trzeba używać sudow /etc/rc.local, nie jest już uruchomiony jako root?
HeatfanJohn
W ten sposób całkowicie spieprzyłem moje konfiguracje Ngrok i Weaved. Teraz nie mogę się w ogóle połączyć!
IgorGanapolsky
2

Najpierw musisz skonfigurować przekierowanie portów. Każdy router jest nieco inny, więc będziesz musiał sprawdzić specyfikę routera.
Istnieją ogólne poradniki przekierowania portów, które mogą działać dla większości routerów, ale sugeruję znalezienie przewodnika dla twojego rzeczywistego modelu routera.

Ustaw niezapomniany port, aby połączyć się z Twoim Raspberry Pi, takim jak 23456 lub coś takiego. Uważaj, aby nie zastąpić wspólnych numerów portów .

Wreszcie za pomocą ssh wykonaj następujące czynności:

$ ssh -p 23456 user@IP

Gdzie:

phalt
źródło
Dlaczego nie mogę użyć portu 22 zamiast niestandardowego 23456?
IgorGanapolsky
1
@IgorGanapolsky możesz to zrobić, ale 1) jeśli masz inny komputer, z którym chcesz się połączyć za pośrednictwem SSH poza domem, będzie konflikt i 2) bardziej ryzykowne, ponieważ wielu „hakerów” próbuje zalogować się przez port 22 , dlatego często zaleca się jego zamknięcie na serwerach
meneldal
2

Dostęp do RaspberryPi (a nawet laptopów / serwerów) spoza sieci domowej (czyli z Internetu) nie jest łatwym zadaniem, ponieważ domowy laptop lub RaspberryPi ma tylko lokalny adres IP (w zakresie 10.xxx lub 192.168.xx zasięg). Nie ma publicznego adresu IP widocznego z Internetu.

Prostą odpowiedzią na twoje pytanie jest skorzystanie z bezpłatnych usług online, takich jak SocketXP, które zapewniają bezpieczny publiczny punkt końcowy tunelu SSH do twojego RaspberryPi spoza sieci domowej.

SocketXP zapewnia prosty, bezpieczny i łatwy sposób na dostęp do twojego domowego RaspberryPi z zewnętrznej sieci. SocketXP nie wymaga hakowania żadnych ustawień routera WiFi. Działa po wyjęciu z pudełka. Aby dowiedzieć się, jak skonfigurować RaspberryPi do SSH z zewnątrz, przeczytaj tego bloga na temat zdalnego SSH do RaspberryPi przy użyciu SocketXP.

Jak skonfigurować SocketXP:

Krok 1 : Zainstaluj klienta SocketXP na swoim RaspberryPi za pomocą następującego polecenia.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

Krok 2: Połącz klienta SocketXP z usługą chmurową SocketXP za pomocą następującego polecenia. Musisz zarejestrować się na https://portal.socketxp.com, aby otrzymać unikalny token autoryzacji.

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

Krok 3 : Uzyskaj publiczny punkt końcowy tunelu, aby uzyskać dostęp do swojego RaspberryPi z Internetu.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

Krok 4 : SSH do RaspberryPi z Internetu za pomocą następującego polecenia.

$ ssh [email protected] -p 35277

gdzie „raspberry-username” to nazwa użytkownika / hasło używane do logowania SSH na RaspberryPi.

Ganesh Velrajan
źródło
1

To pytanie jest stare, z biegiem czasu szanse na uzyskanie publicznego adresu IPv4 są coraz mniejsze. Najprawdopodobniej jesteś za CGNAT, co oznacza, że ​​dzielisz jeden publiczny adres IPv4 z innymi klientami dostawcy usług internetowych. Dlatego nie można wykonać przekierowania portu do swojego PI ani niczego innego.

Jeśli masz IPv6, możesz nadać swojemu PI adres statyczny i zezwolić na dostęp do niego na routerze. Wielu operatorów telefonii komórkowej udostępnia teraz IPv6. Stare „naziemne” ISP (Fibre, DSL, koncentryczny itp.) Często ciągną się za nimi.

Możesz również uzyskać tani VPS (wirtualny prywatny serwer) z publicznym IPv4 gdzieś w chmurze i zrobić tunel SSH od PI do VPS.

Lenne
źródło
0

Oprócz odpowiedzi Phalta powinieneś sprawdzić jedną z dynamicznych usług DNS, takich jak Brak adresu IP . Pozwalają ci uzyskać dostęp do sieci domowej pod statyczną nazwą hosta, chociaż twój adres IP może się zmieniać codziennie, z powodu rozłączenia twojego DSL lub operatora kablowego. Mają też ładną stronę początkową , która również wprowadza Cię do odpowiedniej konfiguracji routera.

Możesz zainstalować inadynpakiet na swoim Raspberry Pi, aby zaktualizować wpisy DNS bez adresu IP, gdy zmieni się adres IP. Możesz to zrobić, uruchamiając:

sudo apt-get install inadyn

Z INADYN README wziąłem to przykładowe połączenie:

inadyn --dyndns_system [email protected] -u USER-p PASS -a HOST

Mam nadzieję że to pomoże.

Arne
źródło
No-Ip ma DUC (klient aktualizacji dynamicznej), który zapewni, że adres IP się nie zmieni.
IgorGanapolsky
0

Dodatkowo do odpowiedzi Steve'a Irwina:

Krok 1:

jeśli łączysz się przez sieć WLAN, użyj:

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

Krok 2:

po zmianie powyższego należy ponownie uruchomić networking:

sudo /etc/init.d/networking restart
David Bielen
źródło
Dodałem również 2 linie przed blokiem statycznym, auto wlan0 allow-hotplug wlan0 Znalazłem go w tym poście raspberrypi.stackexchange.com/a/10320/10148 Próbowałem też to zrobić bez nich, ale coś nie działało.
XandruCea,
Ta odpowiedź powinna być uważana za nieaktualną ze względu na zmiany w konfiguracji sieci i systemie init Raspbian.
złotowłosa
0

Ponadto niektóre routery mają wbudowaną obsługę niektórych usług dynamicznego DNS, możesz włączyć tę opcję (jeśli istnieje) w routerze, aby uniknąć instalowania klienta na swoim serwerze PI (i zaoszczędzić trochę na nim kosztów).

użytkownik17925
źródło
0

Tak więc masz serwer ssh (twój Raspberry PI) za firewallem (routerem) i chcesz go podłączyć z dowolnego miejsca. Załóżmy, że twój serwer ssh jest poprawnie skonfigurowany, tzn. Uruchomienie nazwy użytkownika ssh @ localhost date na twoim Raspberry pokazuje bieżącą datę / czas.

Musisz rozwiązać dwa problemy:

  • Router musi przekierować stały port do portu ssh malinowego (zwykle 22).
  • Musisz znać swój publiczny adres IP routera (który zwykle zmienia się przy ponownym połączeniu routera i tak często, jak raz na 24 godziny).

Przekazywanie portów i DynDNS

Istnieją rozwiązania (jak zauważyli inni):

Przy prawidłowej konfiguracji połączenie rasbperry pi może być możliwe za pomocą:

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh [email protected] -p [port]

Korzystanie z sshhub.de

Innym bardzo wygodnym rozwiązaniem, o którym dotychczas nie wspomniano, jest SSHHub (disclamer, jestem autorem). Wykorzystuje własne przekazywanie ssh, aby uzyskać dostęp do Rasperry PI z dowolnego miejsca. Jest niezawodny, darmowy i dość prosty w konfiguracji . Zarejestruj się raz:

ssh [email protected] register

uruchom na swoim Raspberry PI:

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

...i to wszystko! Możesz podłączyć Raspberry Pi z dowolnego miejsca:

ssh -J [username]@sshhub.de localhost
Oliver
źródło
Witaj w Raspberry Pi! Proszę wziąć wycieczkę i odwiedzić HelpCenter , aby zobaczyć, jak działają tutaj rzeczy. Dziękujemy za Twój wkład, ale uprzejmie prosimy o ujawnienie swojego powiązania w odpowiedziach . (Zakładam, że jesteś autorem zalecanego oprogramowania.)
Ghanima
Dzięki za wskazanie mi właściwego kierunku. Jestem autorem Z pewnością chcę zapewnić wartość mojej odpowiedzi dla osób szukających rozwiązania. I mam nadzieję, że mój tak dobrze, jak sam sshhub.
Oliver
0

Możesz użyć VPN, aby umożliwić dostęp przychodzący do twojego pi. OpenVPN to jedno rozwiązanie, które wymagałoby posiadania komputera dostępnego z Internetu (port przychodzący). Jednak dopóki masz dostęp do jednego komputera, pozostałe komputery nie muszą być, ponieważ mogą być klientami serwera OpenVPN.

Inną opcją byłoby skorzystanie z usługi, takiej jak ZeroTier, która zapewnia scentralizowane serwery do tworzenia sieci VPN, dzięki czemu nie trzeba uruchamiać własnego serwera. To jest również bezpłatne.

Rebroad
źródło
Inną bardzo dobrą opcją jest użycie wireguarda .
Ingo