Jak skonfigurować SSH w Raspberry Pi bez podłączania monitora?
Praca z Raspberry Pi jako zdalnym komputerem jest bardzo wygodna – siedząc przed swoim komputerem możemy pracować na malince znajdującej się w innym pomieszczeniu czy nawet na innym kontynencie. Idealnym protokołem komunikacyjnym wykorzystywanym do tego typu zdalnego połączenia jest SSH (Secure SHell). Za jego pomocą możliwe jest uzyskanie bezpiecznego połączenia ze zdalnym komputerem oraz wykorzystywanie poleceń bezpiecznego kopiowania plików SCP (Secure CoPy) czy SFTP (SSH File Transfer Protocol).
Żeby móc korzystać z dobrodziejstw protokołu SSH, należy dokonać drobnej zmiany w konfiguracji Raspberry Pi. O tym jak to zrobić w malince z dołączonym monitorem i klawiaturą, można przeczytać w artykule „Raspberry Pi – włączenie SSH”. Odrobinę trudniej jest, gdy nie dysponujemy dodatkowym sprzętem, ale z tak ubogą konfiguracją też można sobie poradzić. Poniżej opisujemy jak to zrobić.
Wgranie obrazu na kartę
Pierwszą czynnością jest przygotowanie karty SD z systemem operacyjnym dla Raspberry. Najłatwiej jest to zrobić wykorzystując program Raspberry Pi Imager, co zostało opisane w artykule „Raspberry Pi Imager – przygotowanie karty SD dla malinki nigdy nie było tak łatwe”.
Rysunek 1. Raspberry Pi Imager
Włączenie SSH
Karta SD po nagraniu systemu operacyjnego Raspbian jest podzielona na dwie partycje. Pierwsza partycja (o nazwie boot) zawiera pliki zapisane w systemie plików FAT potrzebne do uruchomienia Raspberry Pi. Dzięki temu dostęp do zawartości partycji jest bezproblemowy z poziomu Windowsa, macOS czy Linuksa. Druga partycja jest zapisana w popularnym w świecie linuksowym systemie plików ext4 – dostęp do tej partycji z poziomu systemu Windows wymaga zainstalowania dodatkowego oprogramowania. Na szczęście podczas włączania SSH wystarczy dostęp do partycji boot.
Jeżeli po skończonym nagrywaniu systemu na kartę SD nie ma dostępu do partycji boot, to kartę należy wyjąć i ponownie włożyć do czytnika. W katalogu głównym należy utworzyć plik o nazwie ssh (bez rozszerzenia!). Jeżeli korzystamy z Eksploratora plików w systemie Windows, to należy nacisnąć prawy klawisz myszy i wybrać Nowy > Dokument tekstowy, a następnie wpisać ssh. W systemie Windows nasz plik automatycznie otrzyma rozszerzenie txt (świadczy o tym wartość Dokument tekstowy w kolumnie Typ), co w naszym przypadku jest niepożądane.
Rysunek 2. Plik ssh jako dokument tekstowy
Aby zmienić plik .txt w plik bez rozszerzenia, w zakładce Widok należy zaznaczyć Rozszerzenia nazw plików.
Rysunek 3. Ustawienie pokazywania rozszerzeń nazw plików
Teraz już można usunąć rozszerzenie pliku ssh.txt.
Rysunek 4. Usunięcie rozszerzenia pliku ssh
Zdalne połączenie z Raspberry można zrealizować z wykorzystaniem sieci bezprzewodowej Wi-Fi lub sieci przewodowej (w takim przypadku można pominąć punkt Konfiguracja Wi-Fi).
Konfiguracja Wi-Fi (opcjonalnie)
W podobny sposób można skonfigurować sieć bezprzewodową. Aby to zrobić, utwórz plik wpa_supplicant.conf. Następnie skopiuj do niego poniższą zawartość, ustawiając poprawną nazwę swojej sieci i hasło do niej.
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=PL network={ ssid="NAZWA_SIECI" psk="HASŁO_SIECI" }
Ustalenie adresu IP Raspberry Pi
Po wykonaniu opisanej wcześniej konfiguracji można wreszcie uruchomić nasz komputer. Włóż kartę microSD z nagranym systemem do Raspberry Pi, podłącz kabel zasilający i ewentualnie kabel Ethernet (jeśli nie korzystasz z Wi-Fi).
Do uzyskania zdalnego połączenia konieczna jest znajomość adresu IP z jakim pracuje Raspberry Pi. Adres ten można odczytać w routerze, do którego jest dołączona malinka, jednak często nie mamy odpowiednich uprawnień, aby to zrobić.
Inną metodą jest wywołanie komendy arp w wierszu poleceń systemu Windows (wyszukaj w menu Start wpisując cmd). Na początku uruchom wiersz poleceń jako administrator (po wyszukaniu cmd naciśnij prawym przyciskiem i wybierz opcję Uruchom jako administrator):
Rysunek 5. Uruchomienie wiersza poleceń jako administrator
Następnie uruchom polecenie czyszczące pamięć cache tablic ARP w naszym komputerze:
arp -d
Teraz podłącz Raspberry Pi, odczekaj kilka sekund, aby się uruchomiło i wywołaj (nie są już potrzebne uprawnienia administratora):
arp -a
Polecenie to powoduje wyświetlenie tablicy ARP, czyli powiązań adresów IP z adresami MAC urządzeń dołączonych do sieci lokalnej.
Rysunek 6. Adres IP znaleziony za pomocą polecenia arp
Obecnie Fundacja Raspberry ma przydzielone adresy MAC:
b8-27-eb-xx-xx-xx
dc-a6-32-xx-xx-xx
więc odnalezienie naszej malinki nie powinno być trudne (o ile urządzeń w sieci nie jest zbyt dużo).
Rysunek 7. Adresy MAC przydzielone Fundacji Raspberry Pi
Innym sposobem na ustalenie adresu IP naszego Raspberry Pi jest skorzystanie ze skanera adresów IP, np. darmowego programu Angry IP Scanner czy Advanced IP Scanner.
Rysunek 8. Adres IP znaleziony za pomocą skanera Angry IP Scanner
Zdalne połączenie
Mając ustalony adres IP naszego Raspberry Pi możemy wreszcie rozpocząć pracę na zdalnym komputerze. Jeśli korzystasz z systemu macOS lub Linux, wpisz w terminalu komendę:
ssh pi@192.168.0.103
Rysunek 9. Widok okna terminala po połączeniu się z Raspberry Pi (macOS)
Domyślne dane do logowania do Raspberry Pi:
- login: pi
- hasło: raspberry
W systemie Windows jako klient SSH od wielu lat króluje PuTTY i właśnie tego programu będziemy używali. Po jego uruchomieniu ustawiamy typ połączenia na SSH, w polu Host Name (or IP address) wpisujemy ustalony wcześniej adres IP (czyli w naszym przypadku 192.168.0.103). Port pozostaje taki, jaki jest ustawiony domyślnie, czyli 22.
Rysunek 10. Ustawienia połączenia SSH w programie PuTTY
Nawiązanie połączenia nastąpi po kliknięciu przycisku Open. Po chwili powinno pojawić się okienko ostrzegające przed połączeniem z nieznanym komputerem. Jest to wbudowane w PuTTY zabezpieczenie przed atakiem MITM (man-in-the-middle). Jeżeli naciśniemy Tak, to klucz identyfikujący Raspberry Pi zostanie zapamiętany i przy kolejnych połączeniach takie ostrzeżenie nie będzie wyświetlane.
Rysunek 11. Ostrzeżenie wyświetlane przy pierwszym połączeniu