Kurs Raspberry Pi – #7 – dostęp zdalny VNC, SCP, klucze RSA

Kurs Raspberry Pi  – #7 – dostęp zdalny VNC, SCP, klucze RSA

W poprzednich częściach kursu opisaliśmy jak na kilka sposobów można się połączyć z RPi. Czas wykorzystać naszą zdalną komunikację!

Pora na poznanie trzech narzędzi, dzięki którym praca z Raspberry Pi jest wygodniejsza. Od teraz z interfejsu graficznego będą mogły skorzystać również te osoby, które nie mogły wykonać ćwiczeń wymagających monitora z HDMI.

Podłączanie do Raspberry Pi myszki, klawiatury i zewnętrznego monitora (patrz: 4. część kursu), to ciekawe, ale mało praktyczne rozwiązanie. Sprawdza się właściwie tylko wtedy, gdy chcemy traktować malinkę jak zwykły komputer PC. Niewątpliwą zaletą tego rozwiązania jest jednak dostęp do interfejsu graficznego. Komunikacja przez UART (patrz: 5. część kursu) może nas uratować w wielu sytuacjach, ale przesyłanie informacji jest stosunkowo wolne.

Właśnie dlatego najlepiej przyzwyczaić się do pracy przez sieć (patrz: 6. część kursu). Nie potrzebujemy dodatkowego sprzętu, malinka może być gdzieś schowana, a i tak możemy na niej pracować tak, jakby była obok nas.

Zdalny pulpit na Raspberry Pi - VNC

Praca w trybie tekstowym ma dużo zalet. Jednak dla wielu osób wygodniej będzie oswoić się z pracą zdalną, jeśli zaczniemy od trybu graficznego. Zyskają na tym również osoby, które nie miały wcześniej dostępu do monitora z HDMI.

Z pomocą przychodzi nam popularny protokół VNC (ang. Virtual Network Computing). Dzięki niemu możliwe będzie przesłanie obrazu z Raspberry Pi do naszego komputera. Będzie to ten sam interfejs graficzny, który poprzednio trafiał na monitor. Mówiąc inaczej zamienimy ekran PC (lub laptopa) w wirtualny ekran malinki.

Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!

Kup w Botland.com.pl

Aktywacja VNC

Najpierw musimy zalogować się do RPi w trybie tekstowym i aktywować VNC. Wydajemy znane już nam polecenie:

Dla przypomnienia: sudo to odpowiednik opcji "uruchom jako administrator" znanej z Windowsa. Parametrem tego polecenia jest to, co chcemy uruchomić, czyli raspi-config.

Tym razem interesuje nas pozycja Interfacing Options. Wybieramy ją strzałkami, zatwierdzamy enterem i przechodzimy do opcji VNC:

Ostatni krok to potwierdzenie, że chcemy uruchomić dostęp przez VNC. Strzałkami poruszamy się tak, aby podświetlić na czerwono przycisk Yes i klikamy enter. Na koniec wyświetli się ekran potwierdzający uruchomienie dostępu przez VNC.

Zanim wyjdziemy z opcji warto jeszcze dostosować rozdzielczość ekranu. W menu głównym wybieramy opcję Advanced Options, a następnie Resolution:

Lista dostępnych rozdzielczości.

Domyślna rozdzielczość to 720x480, co dobrze sprawdza się w przypadku małych ekranów LCD. Wartość ta nie pasuje jednak do rozdzielczości typowych monitorów. Co najważniejsze, niektóre aplikacje graficzne, przy zbyt małym rozmiarze okna, mogą być "ucinane". Jak widać poniżej, przy małej rozdzielczości ekranu nawet wybór opcji w menu będzie utrudniony:

Nie warto też przesadzać ze zbyt dużą rozdzielczością, ponieważ może to wprowadzić problemy ze zdalną pracą (będą duże opóźnienia). Dobrze zacząć od środkowej opcji, czyli: 1280x720px.

Po zatwierdzeniu nowego wyboru wychodzimy z raspi-config, wybierając opcję Finish na głównym ekranie. Program zaproponuje restart malinki, na co się zgadzamy.

Instalacja klienta VNC

Gdy Raspberry Pi się restartuje możemy zająć się przygotowaniem naszego PC. Teoretycznie dowolny klient VNC powinien działać poprawnie, ale praktyka niestety pokazuje co innego. Aby uniknąć problemów warto skorzystać z zalecanego RealVNC.

Warto wspomnieć, że jest on dostępny dla różnych systemów operacyjnych, nie tylko Windows. Dzięki temu możemy bez problemu pracować zdalnie na malince z poziomu Linuksa, Mac OS X, a nawet telefonu komórkowego.

Mnogość dostępnych platform.

Program jest prosty w obsłudze. Po jego uruchomieniu w górnym pasku wpisujemy IP malinki:

Pasek do wpisania adresu IP.

Naciskamy enter, rozpocznie się logowanie, podczas którego będziemy musieli potwierdzić, że na pewno chcemy połączyć się z tym urządzeniem:

Po chwili na komputerze wyświetli się "pulpit" Raspberry Pi. Całość będzie działała tak samo jak odbywało się to przy bezpośrednim podłączeniu do malinki. Metoda ta ma pewne ograniczenia, ale wrócimy do tego w dalszych częściach kursu.

Trzy, widoczne różnice podczas pracy przez VNC to:

  • niebieska ikonka VNC (w prawym górnym rogu RPi),
  • wysuwany pasek (u góry ekranu) z opcjami RealVNC,
  • ewentualne opóźnienia (przez słabe połączenie sieciowe).

Dodatkowy pasek opcji VNC.

Od tej chwili możemy pracować zdalnie na Raspberry Pi wykorzystując nasz komputer. Działa monitor, klawiatura oraz myszka. Nie musimy więc podłączać do malinki plątaniny kabli. Niestety praca nawet w sieci lokalnej powoduje pewne opóźnienia.

Zdalny dostęp do plików - SCP

Często musimy kopiować pliki między komputerami. Możemy w tym celu użyć dysk sieciowy lub możemy "biegać" do Raspberry Pi z pendrivem. Dużo szybciej będzie to zrobić kopiując dane bezpośrednio między komputerami. Do tego celu wykorzystamy protokół SCP (secure copy).

Wystarczy pobrać i zainstalować darmowy program WinSCP:

Popularny program WinSCP.

Po uruchomieniu programu zobaczymy okno do logowania. W pole Nazwa hosta wpisujemy IP, niżej podajemy nazwę użytkownika i hasło. Jako protokół powinniśmy mieć wybrane SFTP, a numer portu pozostaje taki sam jak w przypadku SSH, czyli 22. Po rozpoczęciu logowania zostaniemy poproszeni o potwierdzenie, czy chcemy połączyć się z tym komputerem:

Po chwili uzyskamy dostęp do plików z Raspberry Pi. Po lewej stronie widoczny są zasoby PC, a po prawej pojawia się drzewo katalogów z malinki. Od teraz możemy przeciągać, kopiować i podglądać pliki w wygodny sposób:

Dostęp do plików na Raspberry Pi.

Struktura plików

Katalog domowy, czyli domyślny po zalogowaniu do Raspberry, to /home/pi. W katalogu /home zapisywane są katalogi użytkowników, a pi to nazwa domyślnego użytkownika. W Linuksie używane są odwrotne ukośniki niż w Windows, więc zamiast c:\Użytkownicy\pi mamy /home/pi.

Sama obsługa programu WinSCP jest prosta i intuicyjna, więc nie będziemy się o niej rozpisywali. Warto tylko zwrócić uwagę na dwie charakterystyczne cechy systemu plików Linuksa. Po pierwsze rozróżniane są małe i duże litery. Czyli forbot.txt i Forbot.txt to różne pliki, które mogą być jednocześnie obecne:

Dwa różne pliki.

Druga sprawa to uprawnienia. Dostęp do pliku określane jest przez trzy flagi:

  • prawo do odczytu (r - read),
  • prawo do zapisu (w - write),
  • prawo do uruchamiania (x - execute).

Prawa dostępu mogą być definiowane dla właściciela, grupy oraz innych użytkowników. Do tego tematu wrócimy jeszcze w przyszłości.

Podgląd uprawnień.

Klucze RSA - koniec z podawaniem hasła

Przy omawianiu instalacji systemu przez sieć pokazaliśmy jak połączyć się z malinką używając programu PuTTy. Teraz pora na udoskonalenie tej metody - dostęp bez konieczności podawania hasła. Ze strony projektu PuTTy pobieramy program puttygen.

Okno programu PuTTY Keg Generator.

Nie musimy zmieniać żadnych opcji. Wystarczy, że naciśniemy Generate. Wygenerowanie kluczy trochę trwa. Program prosi nas o ruszanie myszką - dzięki temu wprowadzony jest dodatkowy element losowości do generowanych kluczy.

Generowanie pary kluczy.

Po chwili nasz klucz, a dokładniej mówiąc para kluczy, są gotowe:

Wygenerowane klucze.

Czym jest RSA?

Szyfrowanie RSA (Rivest Shamir Adleman) wykorzystuje parę kluczy: klucz publiczny i prywatny. Klucz publiczny może być ogólnie dostępny, natomiast klucz prywatny powinien być znany tylko osobom, które mają mieć dostęp do malinki.

Umieścimy klucz publiczny na malince, a prywatny zapiszemy na komputerze. Dzięki temu, gdy będziemy łączyć się z malinką PuTTy wykorzysta nasz klucz prywatny zamiast hasła. Takie rozwiązanie jest nawet bezpieczniejsze od hasła - nikt nie podpatrzy klawiszy wciskanych na klawiaturze.

Aby zapisać klucz prywatny przyciskamy Save private key. Jeśli nie podaliśmy hasła do klucza pojawi się ostrzeżenie - możemy je zignorować, w końcu to tylko klucz do malinki, a haseł chcieliśmy uniknąć. Plik z kluczem ma rozszerzenie .ppk, zapisujemy go w znanym, bezpiecznym miejscu na dysku. Jest to plik tekstowy (możemy w notatniku zobaczyć jak wygląda).

Teraz zapisujemy klucz publiczny, tutaj nie musimy martwić się bezpieczeństwem. Podobnie jak poprzednio jest to plik tekstowy. Interesuje nas klucz widoczny w górnej części okna programu. Zaczyna się od ssh-rsa i ma postać przykładowo:

Instalacja kluczy RSA

Klucz musimy skopiować na malinkę do pliku /home/pi/.ssh/autorized_keys. Uruchamiamy WinSCP i przechodzimy do katalogu domowego (/home/pi). Jeśli wcześniej nie używaliśmy kluczy do łączenia przez ssh musimy utworzyć nowy katalog o nazwie .ssh (kropka na początku oznacza katalog ukryty). Klikamy Prawym Przyciskiem Myszy > Nowy > Katalog, jako nazwę wpisujemy ".ssh" i zatwierdzamy operację.

Aby WinSCP pokazywało nam ukryte katalogi należy wejść w Opcje > Preferencje > Panele i zaznaczyć odpowiednią "Pokaż ukryte katalogi":

Widok ukrytych katalogów.

Po zatwierdzeniu ustawień pojawią się nowe, wcześniej ukryte, katalogi. Wchodzimy w stworzony przez nas .ssh. Teraz tworzymy nowy plik, nadajemy mu nazwę authorized_keys, następnie wklejamy dane wygenerowane wcześniej:

Plik z wygenerowanym kluczem.

Gotowy plik z kluczem przenosimy do utworzonego wcześniej katalogu:

Plik z kluczem przeniesiony na Raspberry Pi.

Teraz wystarczy, że połączymy się z malinką używając PuTTy oraz naszego klucza prywatnego. Podstawowe dane połączenia (nazwa hosta, port itd.) są identyczne jak dla połączenia z hasłem.

Musimy tylko wybrać opcję Connection > SSH > Auth i kliknąć Browse przy polu Private key file for authentication. Wskazujemy tam zapisany wcześniej klucz prywatny. Na zakończenie w zakładce Session warto zapisać ustawienia. Wpisujemy nazwę i klikamy przycisk Save.

Od teraz wystarczy dwa razy kliknąć na zapisaną nazwę. Otworzy się terminal, w którym zostaniemy poproszeni o podanie nazwy użytkownika. Hasło nie będzie już potrzebne:

Logowanie bez hasła.

Podsumowanie

W tej części zobaczyliśmy jak pracować używając zdalnego pulpitu poprzez VNC, nauczyliśmy się kopiować pliki przez SCP oraz poznaliśmy podstawy kryptografii z kluczem publicznym opartej na RSA. Oczywiście taka metoda logowania jest najwygodniejsza, gdy mamy ustawione trudne hasło. Wtedy nie musimy za każdym razem wpisywać długiego ciągu znaków.

Dzięki materiałom z tej lekcji każdy może już cieszyć się interfejsem graficznym. W kolejnym odcinku kursu zajmiemy się zmorą początkujących, czyli pracą z interfejsem tekstowym. Pora poznać podstawy "prawdziwego Linuksa" w praktyce!

Nawigacja kursu

Autor: Piotr Bugalski
Testy: Piotr Adamczyk
Redakcja: Damian Szymański

kursRaspberryPi, Linuks, RPI, RSA, SCP, VNC

Komentarze

Komentarze do tego wpisu są dostępne na forum: