ODROID – headless setup, czyli wstępna konfiguracja przez SSH
Uzbroiliśmy kartę microSD w system Ubuntu Mate 20.04. Podłączyliśmy także ODROIDa do routera i zasilania. Kontynuujemy Headless Setup, w dalszym ciągu nie potrzebujemy podłączać do ODROIDa monitora, klawiatury, ani myszki. Ba! Na dobrą sprawę od teraz nie mamy nawet potrzeby go dotykać, a jego dalszą konfigurację wykonamy całkowicie zdalnie. Wykorzystamy do tego terminal i połączenie przy użyciu protokołu komunikacji SSH.
Ustalmy adres IP ODROIDa
Każde urządzenie połączone do routera, z serwerem DHCP, otrzymuje swój unikatowy lokalny adres IP. Tego adresu będziemy potrzebować do połączenia się z ODROIDem przez SSH. Informację na temat adresów IP połączonych urządzeń można uzyskać na przykład po zalogowaniu się jako administrator na routerze. Nie będę tego opisywał, bo nie starczyłoby mi życia na omówienie postępowania dla wszystkich routerów dostępnych na rynku, dlatego pokażę uniwersalny sposób, który może jest nieco bardziej skomplikowany i czasochłonny, ale powinien działać w każdym przypadku i to w zasadzie bez konieczności znania hasła administratora routera. Będziemy operować w środowisku Unixowym (Linux i macOS, w moim przypadku ten drugi), nie wszystko będzie w taki sam sposób do wykonania na Windowsie, ale nawet Windows 10 daje już możliwość uruchomienia powłoki Ubuntu (dostęp w najprostszy sposób poprzez instalację z Microsoft Store), więc nie widzę konieczności tworzenia poradnika w kontekście systemu Microsoftu.
Rozpoczniemy od ustalenia adresu IP komputera, z którego planujemy wykonać połączenie, dalej będziemy go w skrócie nazywać host. Z kolei ODROIDa proponuję od tego momentu nazywać serwerem. Ten krok nie jest nam niezbędny, ale uznałem, że warto jest znać lokalny adres IP swojego hosta, co może nam później ułatwić pracę.
Włączamy terminal i wydajemy polecenie:ifconfig en0
W rezultacie otrzymamy wynik podobny do zaprezentowanego poniżej:en0: flags=8863 mtu 1500
options=6463
ether 3c:a6:f6:56:ec:f1
inet6 fe80::c25:553b:f5f3:b5ae%en0 prefixlen 64 secured scopeid 0xb
inet 192.168.88.69 netmask 0xffffff00 broadcast 192.168.88.255
nd6 options=201
media: autoselect
status: active
Okazuje się, że adres IP mojego hosta w sieci lokalnej to 192.168.88.69. Zakładając, że host i serwer znajdują się w tej samej sieci wiemy, że adres IP serwera znajduję się w zakresie 192.168.88.0-192.168.88.255, co można również zapisać przy użyciu maski podsieci 192.168.88.0/24.
Wiemy gdzie szukać to teraz potrzebujemy narzędzia do szukania, jest nim polecenie „arp”. Skan sieci w poszukiwaniu „sąsiadów” naszego hosta możemy wykonać poleceniem:arp -a
Host odpyta po kolei każdy z adresów IP znajdujących się w swojej podsieci (192.168.88.0/24). Pierwsze jego pytanie to „jest tam kto?”, jeżeli żadne urządzenie nie odezwie się pod tym adresem to przechodzi do kolejnego, natomiast jeżeli jest odpowiedź to dopyta jeszcze o adres MAC urządzenia, który jest unikatowym oznaczeniem karty sieciowej danego urządzenia. Na koniec otrzymamy długą i niezbyt czytelną listę, dlatego wzbogacimy nasze polecenie o funkcję, która przefiltruje nam wynik jedynie do tego co jest nam potrzebne. Tutaj właśnie potrzebujemy adresów MAC, gdyż dla każdego urządzenia ODROID zaczyna się on od ciągu „00:1e:06” lub „0:1e:6” – zależy od formatowania zapisu adresów MAC danego systemu. Do przefiltrowania wyników wykorzystamy komendy grep i sformułujemy polecenie następująco:arp -a | grep -i -E '00:1e:06|0:1e:6'
Formuła polecenia grep została przeze mnie delikatnie rozbudowana. „-i” oznacza, że nie ma znaczenia wielkość liter (duże/małe). Z kolei po „-E” i pomiędzy apostrofami dałem dwie wartości przedzielone znakiem „|”, gdyż musimy sobie poradzić z dwoma różnymi formami zapisu adresów MAC, o których wspominałem wcześniej. W ten prosty sposób otrzymamy jeden wynik, który wprost wskaże nam adres IP naszego serwera:? (192.168.88.7) at 0:1e:6:48:bb:f3 on en0 ifscope [ethernet]
Łączenie po SSH
Najtrudniejsze za nami. Wiemy już gdzie mamy się połączyć, więc pozostaje już tylko wywołać odpowiednie polecenie:ssh odroid@192.168.88.7
Zostanie przeprowadzona próba połączenia z serwerem. Przy pierwszym połączeniu otrzymamy prawdopodobnie komunikat podobny do poniższego:The authenticity of host '192.168.88.7 (192.168.88.7)' can't be established.
ED25519 key fingerprint is SHA256:[klucz_ciąg_znaków].
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Ostrzega on o tym, że ten serwer, a raczej jego klucz RSA, nie widnieje na naszej liście zaufanych serwerów, czego jesteśmy świadomi, bo w końcu to pierwsze połączenie, dlatego potwierdzamy wpisując „yes”.
Połączenie z serwerem zostanie przerwane i zostanie wyświetlony kolejny komunikat:Warning: Permanently added '192.168.88.7' (ED25519) to the list of known hosts.
Connection closed by 192.168.88.7 port 22
To oznacza, że serwer został dodany do listy zaufanych. Ponownie wywołujemy polecenie:ssh odroid@192.168.88.7
i tym razem już jesteśmy poproszeni o hasło użytkownika, na którego chcemy się zalogować. Domyślnie jest to hasło:odroid
Nie zdziw się, że podczas wpisywania hasła nic się nie dzieje na ekranie. Podawanie kolejnych liter nie wiąże się w tym przypadku z wyświetlaniem np. ******. Trzeba po prostu wpisać hasło i nacisnąć ENTER.
Udało się!
To już wszystko. Po wykonaniu wszystkich powyższych działań uzyskaliśmy dostęp do świeżutkiego serwera, który tylko czeka na skonfigurowanie go zgodnie z naszymi wymaganiami. Jest też sporo działań, które są zalecane, lub wręcz powinno się wykonać, po pierwszym uruchomieniu/połączeniu się, ale o tym w następnych wpisach.
Jeżeli materiał zawarty w tym wpisie jest dla Ciebie wartościowy i masz ochotę wesprzeć moją pracę to zapraszam na mój profil na >Patronite<. Zachęcam także do odwiedzenia mojej strony >tomaszdunia.pl<. Możesz także zagadać do mnie na Twitterze >@theto3k<.
Poprzedni wpis:
ODROID – instalacja systemu Ubuntu Mate
Następny wpis:
Aktualizacja systemu – skrypt bash
Kategorie: Dla początkujących,Poradniki - @ 2022-06-01 20:00
Tagi: Adres IP, Adres MAC, arp, CLI, DHCP, grep, klucz RSA, Linux, macOS, ODROID, SSH, ubuntu, Unix