Raspberry Pi zdalny dostęp, reverse ssh, internet mobilny

REVERSESSH_1

Posiadam szybki internet LTE w PLAY, który niestety nie ma możliwości włączenia usługi publicznego ip (stały lub dynamiczny). U pozostałych mobilnych operatorów ta usługa jest płatna. Jeżeli więc nasza malina stoi za NAT-em i nie ma do niej bezpośrednio dostępu z internetu to jednym z możliwych rozwiązań dostępu zdalnego jest reverse ssh. Dzięki temu adres publicznego serwera z odpowiednim numerem portu staje się adresem naszej maliny. Można wchodzić bezpośrednio z internetu np. na stronę www maliny,pulpit zdalny vnc,czy zarządzać przez ssh.

Wymagania:

  • konto ssh na serwerze posiadającym publiczne ip

Przygotowania po stronie serwera z publicznym ip

W przykładzie wykorzystano Ubuntu Server 14.04.1 LTS. Należy dokonać drobnej modyfikacji konfiguracji usługi sshd :

Dodatkowo jeśli chcemy mieć bezpośredni dostęp z internetu do maliny poprzez tunel na serwerze warto ustawić odpowiednie przekierowanie portów na routerze przed naszym serwerem z publicznym ip. W tym przykładzie serwer wewnętrzny z Ubuntu ma ip : 192.168.1.10. Porty zewnętrzne przekierowujące do odpowiednich usług to odpowiednio :

  • 1234  port ssh
  • 1235 port http
  • 1236 port vnc

Na routerze w tym przykładzie 192.168.1.1 ustawiamy więc przekierowanie portów (w routerach Linksys Setup -> Forwarding):

  • 1234 => 192.168.1.10
  • 1235 => 192.168.1.10
  • 1236 => 192.168.1.10

Oczywiście musimy także zezwolić firewallowi na serwerze 192.168.1.10 na ruch przychodzący na porty 1234,1235,1236 ze wszystkich albo tylko z konkretnych ip.

Przygotowania po stronie maliny

Należy dokonać drobnej modyfikacji konfiguracji usługi sshd:

Ręczne zestawianie tunelu

gdzie:

  • -f oznacza uruchomienie połączenia w tle
  • -N tworzy tylko tunel bez uruchamiania żadnych poleceń zdalnych
  • -R 1234,1235,1236 to porty, na które chcemy przekierować żądania do konkretnych usług: ssh,http,vnc
  • uzytkownik@serwer to nasz login i nazwa naszego serwera z publicznym ip np.  usr_zibi@205.204.199.198 (numer ip serwera przykładowego)
  • -p 2221 port serwera ssh , podajemy jeśli na naszym serwerze usługa ssh  ma inny port niż 22

Jeśli ustawiliśmy przekierowanie na routerze i skonfigurowaliśmy odpowiednio firewall to możemy teraz bezpośrednio z internetu np. z naszego smartphone wpisać adres : http://205.204.199.198:1235 . Zobaczymy wtedy stronę www z naszej maliny. Aby połączyć się bezpośrednio z internetu z usługą ssh maliny łączymy się z serwerem 205.204.199.198 z portem 1234 np. ssh pi@205.204.199.198 – p 1234 . Aby połączyć się bezpośrednio z internetu z pulpitem zdalnym maliny przez vnc wpisujemy w kliencie vnc np. tightvnc Remote Host: 205.204.199.198:1236.

Automatyczne zestawianie i podtrzymywanie tunelu

Aby możliwe było automatyczne zestawianie tunelu potrzebna jest możliwość logowania się bez wpisywania hasła na naszym serwerze zdalnym z publicznym ip.

Na naszej malinie wydajemy polecenia:

Kopiujemy  wygenerowany id_rsa.pub do authorized_keys do naszego serwera z publicznym ip np.

Tworzymy skrypt:

o zawartości:

Nadajemy mu atrybut wykonywalności : sudo chmod +x /sbin/reverse_tunnel.sh i dodajemy go do crontaba maliny:

Aby sprawdzić czy połączenie ssh (tunel) jest aktywny należy wykonać polecenie :

 

Dodaj komentarz