Przygotuj kartę SD do Wi-Fi w Headless Pi

158

Potrzebuję SSH mojego Pi przez Wi-Fi, ale ponieważ jest to płyta modelowa A (korzystanie z koncentratora USB nie jest możliwe - nigdy) i nie mam sieci Ethernet, nie mogę skonfigurować Pi do połączenia z moją zabezpieczoną siecią Wi-Fi. Chcę mieć kartę SD podłączoną do mojego laptopa i chcę edytować plik z informacjami o konfiguracji Wi-Fi, aby moje Pi połączyło się z moją siecią automatycznie podczas uruchamiania, aby następnie móc SSH, aby uzyskać kontrolę. Wiem, jak włączyć SSH w systemie bezgłowym dzięki tej odpowiedzi .

Edit . Rozglądam się i zastanawiam się, czy mogę po prostu edytować plik, /etc/network/interfacesgdy karta SD jest w moim komputerze i umieścić w niej wszystkie sieciowe ssid, psk i wlan0. Czy to zadziała? Dzięki

11 grube 11
źródło
Masz do czynienia z dość trudną sytuacją. Sugerowałbym tymczasowe użycie USB LAN do połączenia przez SSHS. Większość sterowników jest dla nich uwzględniona. Włóż WiFi, a następnie postępuj zgodnie z tą odpowiedzią, aby skonfigurować WiFi na Pi. Po totemach uruchomisz się ponownie, odłącz sieć LAN i uruchom za pomocą Wi-Fi. Powinien się połączyć automatycznie w ciągu kilku minut.
Piotr Kula,
2
Niskim kosztem konfiguracji jest użycie adaptera szeregowego USB do połączenia z szeregowym w nagłówku GPIO. Nie musisz nawet włączać ssh, aby to zrobić
John La Rooy
zobacz moją odpowiedź [tutaj] [1], aby uzyskać alternatywną metodę [1]: raspberrypi.stackexchange.com/a/31397/30719
memebrain

Odpowiedzi:

237

Jest tu kilka świetnych odpowiedzi, ale wiele jest nieaktualnych. Od maja 2016 r. Raspbian może kopiować dane Wi-Fi /boot/wpa_supplicant.confdo, /etc/wpa_supplicant/wpa_supplicant.confaby automatycznie skonfigurować dostęp do sieci bezprzewodowej:

Jeśli plik wpa_supplicant.conf zostanie umieszczony w katalogu / boot /, zostanie on przeniesiony do katalogu / etc / wpa_supplicant / przy następnym uruchomieniu systemu, zastępując ustawienia sieciowe; pozwala to na wstępne załadowanie konfiguracji Wi-Fi na kartę z systemu Windows lub innego komputera, który widzi tylko partycję rozruchową.

- Najnowsza aktualizacja Raspbian - Raspberry Pi , 13.05.2016

Ponieważ do /bootpartycji jest dostępny każdy komputer z czytnikiem kart SD, konfiguracja Wi-Fi jest teraz znacznie prostsza.

Typowy plik wpa_supplicant.conf to:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=«your_ISO-3166-1_two-letter_country_code»

network={
    ssid="«your_SSID»"
    psk="«your_PSK»"
    key_mgmt=WPA-PSK
}

Zamień „your_ISO-3166-1_two-letter_country_code” na kod kraju ISO (np. W CAKanadzie), „your_SSID” na nazwę punktu dostępu bezprzewodowego, a „your_PSK” na hasło wifi.

Jeśli nie chcesz przechowywać hasła Wi-Fi jako zwykły tekst, możesz użyć wpa_passphrasenarzędzia do przechowywania hasła z hasłem:

wpa_passphrase «your_SSID»

Narzędzie wyświetli monit o podanie hasła i zwróci szesnastkową wartość skrótu. Pamiętaj, że to hashowane hasło jest przechowywane bez cudzysłowów /boot/wpa_supplicant.conf, np .:

psk=b76dc68cb76bfea7232e32634f859ca760cd8abeee318a346b51d3bde00b8965

Należy zauważyć, że country, ctrl_interfacei update_configlinie są wymagane w pliku, który został stworzony w /boot: jeśli brakuje systemu nie będzie łączyć się z siecią. Powyższy proces można powtórzyć, aby poprawić pominięcia.

Proces ten został przetestowany zarówno z Raspbian, jak i Raspbian Lite od wydania z listopada 2018 r.


Ponadto możesz dodać dostęp do Secure Shell (SSH) do swojego bezgłowego Raspberry Pi. SSH jest domyślnie wyłączony w Raspbian ze względów bezpieczeństwa. Możesz go włączyć, tworząc plik o nazwie /boot/ssh:

W przypadku konfiguracji bezgłowej SSH można włączyć, umieszczając plik o nazwie „ssh”, bez żadnego rozszerzenia, na partycji rozruchowej karty SD. Podczas uruchamiania Pi szuka pliku „ssh”; jeśli zostanie znaleziony, SSH jest włączony, a następnie plik jest usuwany. Zawartość pliku nie ma znaczenia: może zawierać tekst lub nic.

- SSH (Secure Shell) - Dokumentacja Raspberry Pi

Jeśli włączysz dostęp SSH, należy jak najszybciej zmienić hasło standardowego użytkownika pi . Ponieważ hasło domyślne ( malina ) jest powszechnie znane, Twoje Raspberry Pi jest efektywnie dostępne dla wszystkich w sieci, dopóki nie zmienisz hasła. Możesz to zrobić za pomocą passwdpolecenia.

szum
źródło
2
Istnieją dwa ograniczenia dla tego rozwiązania (testowane z obrazami 23.09.2016): 1. Plik musi być sformatowany przy użyciu zakończeń linii w stylu Linux (LF zamiast CR LF). 2. Nie działało z jasnym obrazem Raspbian na moim Raspberry Pi 3.
user2154065
1
@ user2154065 1. Ukryj plik do LF za pomocą Notepad ++ , klikając prawym przyciskiem myszy „Dos \ Windows” w prawym dolnym rogu i wybierając „Format UNIX / OSX”. 2. wpasupplicantPakiet prawdopodobnie nie jest zawarty w Raspbian Lite.
Hydraxan14
1
Teraz mam uruchomionych kilka maszyn Raspbian Lite, jestem prawie pewien, że mój komentarz był błędny: wpa_supplicant jest dołączony lub można go łatwo zainstalować.
scruss
5
@kleinfreund nie dołączaj hasła w postaci zwykłego tekstu. Uruchom „wpa_passphrase SSID” (ze swoim SSID) i wprowadź hasło po wyświetleniu monitu. Skopiuj dane wyjściowe do pliku wpa_supplicant.conf, usuwając wiersz zawierający czysty tekst i pozostawiając tylko wersję z haszowaniem. (Możesz to zrobić w innym systemie, aby mieć plik z wyprzedzeniem podczas konfigurowania karty micro SD dla Pi.)
Peter Hansen
4
@scruss - twoja odpowiedź jest prawie poprawna, dodaj tę linię do wpa_supplicant.confpowyższego przykładu: ctrl_interface=/var/run/wpa_supplicant Właśnie wypróbowałem nową Zero W z Raspbian Strech Lite
ctekse
23

Niektóre szczegółowe instrukcje:

Zawartość /etc/network/interfaces:

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    post-up ifdown eth0
iface default inet dhcp

Zawartość /etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="YOUR_SSID_HERE"
    psk="YOUR_SECRET_PASSPHRASE_HERE"
    id_str="SOME_DESCRIPTIVE_NAME"
}

Szczery. Te dwa pliki z podaną zawartością są tym, czego używam na wszystkich moich pi. Uruchamiają się i natychmiast łączą z moim routerem bezprzewodowym. Negocjacje DHCP zapewniają adres, a mój router rozpoznaje nazwę hosta na właściwy adres IP. Pamiętaj, aby odpowiednio nazwać każdy PI za pośrednictwem /etc/hostname.

Potrzebna jest dziwność w interfacespliku na końcu iface default..., w przeciwnym razie bezprzewodowe połączenie WPA nie zostanie nawiązane.

wpa_supplicant.confPlik może mieć wiele network={wpisów też kiedyś zabrać do pracy pi ... podłączyć go i voila, połączony automagicznie tam też, konfiguracja praca była nieco bardziej zawiła chociaż. Zawarte tutaj jako przykład, dodaj / zamień następujące elementy w wpa_supplicant.confpliku:

network={
    ssid="THE_OFFICE"
    scan_ssid=1
    key_mgmt=WPA-EAP
    eap=PEAP
    identity="WORK_USERNAME"
    password="WORK_PASSWORD"
    phase1="peaplabel=0"
    phase2="auth=MSCHAPV2"
    id_str="SOME_DESCRIPTIVE_NAME"
}

Zasadniczo skanuje wpa_supplicant.confplik i łączy się z pierwszą znalezioną siecią, która odpowiada. Bardzo przydatny. W ten sposób można również automatycznie łączyć się z dowolną „otwartą” siecią. Nie najmądrzejsza rzecz do zrobienia, ale wykonalna.

lornix
źródło
Potrzebuję też statycznego adresu IP, ponieważ jest on bezgłowy i nie będę mógł go ssh bez znajomości jego adresu IP. Obecnie mam id_str="home"w iface home inet staticpliku wpa_supplicant.conf i (statyczne informacje o ip pod tym) w pliku interfejsów, to daje mi statyczny adres IP, ale nie jestem pewien, czy to najlepszy sposób na jego skonfigurowanie i jego konfiguracja jest nieco myląca ( i pojawia się błąd „Nie można znaleźć urządzenia„ home ”” podczas rozruchu).
11chubby11
1
Używam dyn.com (lub dyndns.com), aby umożliwić poprawną nazwę dostępu do moich danych, używam ddclient, aby automatycznie ustawić nazwę na właściwy adres. Alternatywnie użyj routera, aby określić statyczny adres DHCP, co jest znacznie bardziej przydatne. Używam również upnpcd, aby dynamicznie konfigurować ustawienia upnp, aby umożliwić mi łączenie się z moimi systemami spoza mojej sieci, teraz nie są potrzebne żadne statyczne adresy IP, ustawia się tam, gdziekolwiek jest. (iface zwrotka może mieć tylko lo / eth0 / wlan0 / default jako opcję, 'home' nie będzie działać)
lornix 30.10.2013
Jak mogę dodać /etc/network/interfacesdo rozruchu SD? Po prostu umieść go w dowolnym miejscu i skopiuje?
denisleksja
Zasadniczo komentarz do odpowiedzi autorstwa lornix - którego rozwiązania z powodzeniem użyłem - ponieważ nie muszę pisać komentarzy. Aby edytować główny system plików, musisz zamontować drugą partycję, a nie pierwszą partycję rozruchową. Zrobiłem: sudo mount / dev / sdc2 / mnt, po którym mogłem edytować pliki w katalogu głównym / mnt, tj. /Mnt/etc/wpa_supplicant/wpa_supplicant.conf i / mnt / etc / network / interfaces i / mnt / etc / hostname (ponownie używając sudo). Po zakończeniu wyjmij cd z hierarchii / mnt i wykonaj sudo umount / mnt. Następnie możesz włożyć kartę SD do Rπ i uruchomić. Pamiętaj, że wymaga to komputera z systemem Linux,
Ketil Malde
10

Od listopada 2016 r. SSH jest domyślnie wyłączony w standardowych obrazach Raspbian ze względów bezpieczeństwa.

Aby ponownie go włączyć, należy utworzyć pusty plik o nazwie albo sshlub ssh.txtfolder startowy karta SD (partycji FAT32 dostępny z oknami)

Aby wstępnie skonfigurować ustawienia Wi-Fi, należy również utworzyć plik o nazwie wpa_supplicant.conftam zawierający:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={ 
ssid="MySSID" 
psk="MyPassword" 
}

Oba te pliki można tworzyć w systemie Windows i edytować za pomocą notatnika.

Następnie włóż kartę SD do pi i powinieneś mieć możliwość SSH od razu.

Mike Redrobe
źródło
Miło widzieć, że znacznie uprościli konfigurację! Świetna odpowiedź!
lornix
3

Począwszy od RASPBIAN STRETCH trzeba to ctrl_interfacei update_configwwpa_supplicant.conf

Aby uzyskać Wi-Fi z ssh przy rozruchu, wykonaj te proste czynności na karcie SD:

  1. touch /<sd mount point>/boot/ssh
  2. nano <sd mount point>/boot/wpa_supplicant.conf

Z zawartością:

country=AU  #omit if US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="YourNetworkSSID-1"
    psk="passwordOne"
}
  1. Odmontuj kartę SD, włóż pi, uruchom pi
rynop
źródło
2

Możesz użyć interfacespliku. Załaduj wszystkie informacje o sieci i włóż je do pendrive'a i ponownie uruchom RPi. RPi przyjmuje ustawienia i konfiguruje Wi-Fi bez potrzeby stosowania dodatkowego sprzętu lub monitora.

Następnie możesz SSH do Pi i zainstalować VNC, aby uzyskać GUI. Jeśli chcesz krok po kroku instrukcje do niego, sprawdź Option 3: Connect with WiFina http://www.dexterindustries.com/BrickPi/getting-started/using-the-pi/

karan
źródło
Nie udało się uruchomić tego. Nie mogę znaleźć żadnych innych informacji w Internecie na temat tego sposobu konfiguracji Wi-Fi.
11chubby11
Zapomniałem wspomnieć o skrypcie używanym do automatyzacji tego. Oto on
karan
2

Możesz także skonfigurować kartę SD, która automatycznie zainstaluje Rasbian ze wstępnie skonfigurowanym połączeniem Wi-Fi na twoim Raspberry pi (konfiguracja bezgłowa Raspberry Pi). Umożliwia to podłączenie pi do zasilania przy pierwszym uruchomieniu.

Krok 1: Pobierz Noobs Pobierz i rozpakuj najnowsze oprogramowanie Noobs (wersja Offline i instalacja sieciowa) na https://www.raspberrypi.org/downloads/

Alternatywnie: bezpośredni link do pliku: http://downloads.raspberrypi.org/NOOBS_latest

W chwili pisania tego tekstu najnowsza wersja NOOBS to 1.4.0

Krok 2: Konfiguracja bezgłowa W katalogu os / usuń wszystkie inne foldery niż rasbian /. W rzeczywistości powinieneś mieć tylko jeden inny folder o nazwie Data_Partition.

W folderze rasbian / edytuj plik flavours.json. Powinieneś zobaczyć następujące:

{
  "flavours": [
    {
      "name": "Raspbian - Boot to Scratch",
      "description": "A version of Raspbian that boots straight into Scratch",
      "supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041"
    },
    {
      "name": "Raspbian",
      "description": "A Debian wheezy port, optimised for the Raspberry Pi",
      "supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041"
    }
  ]
}

Usuń część „Raspbian - Boot to Scratch”, aby plik na końcu wyglądał tak:

{
  "flavours": [
    {
      "name": "Raspbian",
      "description": "A Debian wheezy port, optimised for the Raspberry Pi",
      "supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041"
    }
  ]
}

Zmodyfikuj plik recovery.cmdline w głównym katalogu NOOBS i dołącz cichą instalację do listy argumentów. Plik powinien wyglądać tak na końcu:

runinstaller quiet vt.cur_default=1 elevator=deadline silentinstall

Krok 4 (opcjonalnie): Skonfiguruj niestandardowy układ klawiatury i język Jeśli chcesz zmienić domyślny układ klawiatury (us) i / lub domyślny język (domyślnie „us”), dodaj lang = XX keyboard = XX na liście argumentów odzyskiwania Plik .cmdline (XX należy zastąpić językiem i kodem klawiatury, którym może być fr, de,… Domyślnie jesteśmy my).

Plik powinien wyglądać tak na końcu:

runinstaller quiet vt.cur_default=1 elevator=deadline silentinstall lang=fr keyboard=fr

Krok 5 (opcjonalnie): Skonfiguruj Wifi Noobs Config to narzędzie, które kopiuje / wkleja niektóre pliki zaraz po instalacji Rasbian. Między innymi to narzędzie pozwala wstępnie skonfigurować Wi-Fi na Twoim Pi. Mimo to zakłada się, że używany klucz Wi-Fi jest bezpośrednio obsługiwany przez Raspbian.

Pierwszą rzeczą jest pobranie Noobs Config na GitHub ( https://github.com/procount/noobsconfig/archive/master.zip )

Następnie rozpakuj plik noobsconfig.zip i:

  • skopiuj „customise.sh” do katalogu głównego plików Noobs

  • skopiuj „os / Rasbian / partition_setup.sh” do katalogu „os / Rasbian /” plików Noobs.

  • utwórz folder o nazwie „wifi” pod „os / Rasbian /”

  • skopiuj „Przykłady / Rasbian / wifi / wifi / wpa_supplicant.conf” do
    katalogu „os / Rasbian / wifi /” swoich plików Noobs.

  • skopiuj „Przykłady / Rasbian / wifi / Raspbian_root.txt” do
    katalogu „os / Rasbian /” swoich plików Noobs .

Ostatnią rzeczą jest skonfigurowanie identyfikatora SSID Wi-Fi i psk (hasła) w pliku wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="MyNetwork"
psk="MyPassword"
}

Krok 5 (opcjonalnie): Zmień domyślne hasło Nawet jeśli ten krok jest opcjonalny, zdecydowanie zaleca się zmianę domyślnego hasła konfiguracji Rasbian.

Edytuj plik os / Rasbian / os.json. To powinno wyglądać tak :

{
  "name": "Raspbian",
  "version": "wheezy",
  "release_date": "2015-02-16",
  "kernel": "3.18",
  "description": "A community-created port of Debian wheezy, optimised for the Raspberry Pi",
  "url": "http://www.raspbian.org/",
  "username": "pi",
  "password": "raspberry",
  "supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041"
}

Zmieńmy domyślne hasło w linii 9.

Krok 5: Skopiuj pliki na kartę SD i uruchom Raspberry pi Kopiuj / wklej pliki na karcie SD sformatowanej w FAT.

Krok 6: Uruchom i podłącz Uruchom na naszej karcie SD, po kilku minutach (w zależności od karty SD proces instalacji może potrwać dłużej niż 30 minut) i połącz się z Pi za pośrednictwem SSH.

Że to ...

jeje
źródło
Te instrukcje wyglądają obiecująco, ale od NOOBS v1.9.2 nie ma pliku flavours.json w katalogu os / Raspbian. Ponieważ głównym powodem edycji było usunięcie alternatywnej wersji, myślę, że bezpiecznie jest po prostu pominąć ten krok, gdy nie jest potrzebny.
natevw
2

Proces konfiguracji bezgłowej nieco się zmienił dla Raspbian Stretch i nowszych wersji RetroPie.

wewnątrz katalogu rozruchowego ...

touch ssh

nano wpa_supplicant.conf

dodaj to do wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
    ssid="YOUR_NETWORK_NAME"
    psk="YOUR_PASSWORD"
    key_mgmt=WPA-PSK
}

odmontuj kartę SD i włóż pi do rozruchu

poświęć chwilę i znajdź adres IP swojego pi

ssh do pi

ssh pi@pi-ip-address

domyślne hasło to malina

Ullauri
źródło
1

Musisz edytować wpa_supplicant.confplik na sdcard (jest w /etclub w /etc/wpa_supplicantzależności od wersji dystrybucyjnej). Format pliku wyjaśniono tutaj: http://linux.die.net/man/5/wpa_supplicant.conf

hogliux
źródło
Ale jeśli nastąpi awaria sieci bezprzewodowej, nie nastąpi automatyczne ponowne połączenie przy użyciu podstawowych ustawień. Wymaga użycia trybu ręcznego i roamingu z dodatkowymi plikami konfiguracyjnymi.
Piotr Kula
Cóż, powinno wystarczyć ustawienie, prawda? Ponieważ na pewno połączy się, gdy wpa_supplicant uruchomi się, jeśli sieć będzie dostępna. Myślę również, że wpa_supplicant powinien automatycznie połączyć się ponownie, jeśli stracisz sieć.
hogliux
W nawiązaniu do mojego ostatniego komentarza chciałbym dodać, że sam zastosowałem tę metodę na malinowym modelu A z najnowszym debianem.
hogliux
WPA Supplicant będzie nie ponownie , jeśli używasz AUTO, trzeba korzystać STATICz ROAMINGi zdefiniować SSID do połączenia z ... co jest trochę trudne do skonfigurowania.
Piotr Kula,
1

Stworzyłem narzędzie skryptu powłoki (niestety działa tylko w systemie Linux), automatyzuje cały proces pobierania najnowszego obrazu Raspbian, rozpakowywania obrazu, osadzania w obrazie ustawień Wi-Fi i Ethernet (dostarczonych przez użytkownika), przepakowywania obraz i wypal go na karcie SD. Po uruchomieniu komputera Pi przy użyciu karty SD od razu łączy się on z siecią. Skrypt może także wyszukiwać świeżo skonfigurowane Pi w sieci.

Możesz bezpośrednio połączyć klucz Wi-Fi ze swoim Pi, użyć skryptu RaspImgConfig.sh, aby osadzić obraz Raspbian z poświadczeniami Wi-Fi i wypalić obraz na karcie. Nie potrzebujesz żadnego monitora, myszy ani klawiatury.

Film na Youtube z użyciem narzędzia: https://youtu.be/WdYb1L2WzjM

Pozdrawiam, Subhajit Ghosh

Świecące
źródło
-2

Możesz skonfigurować swoją pi do pracy z WiFi chronionym hasłem i automatycznie włączyć ssh bez uruchamiania pi, z plikami konfiguracyjnymi na partycji / boot.

Użyłem tego dla mojej AIY i przeskanowałem sieć za pomocą nmap, aby znaleźć moje pi.

Stamtąd możesz po prostu połączyć się z pi.

Zanidd
źródło
Powinieneś przynajmniej wyjaśnić potrzebne nazwy plików i ich zawartość, a także link do dalszych informacji.
Steve Robillard
-3

Myślę, że w tych wszystkich odpowiedziach brakuje punktu, że model RPi NIE MA Ethernet, brak Wi-Fi, więc bez względu na to, co robisz, chyba że dostaniesz zewnętrzny klucz sprzętowy, nie będziesz w stanie połączyć się z RPi przez ssh .. .. najlepszym rozwiązaniem jest użycie go bezpośrednio na telewizorze lub użycie go przez port szeregowy na nagłówkach lub, jak powiedziałem, uzyskanie zewnętrznego klucza do Wi-Fi.

amigojapan
źródło
5
Myślę, że sugeruje to, że już go używa. Można by założyć, że OP zdaje sobie sprawę, że nie może połączyć się z siecią bezprzewodową bez jakiegoś adaptera.
Impulss,