Подготовьте SD-карту для Wifi на Headless Pi

160

Мне нужно SSH моего Pi через Wi-Fi, но поскольку это плата модели A (использование USB-концентратора невозможно - никогда), и у меня нет Ethernet, я не могу настроить Pi для подключения к моей защищенной сети Wi-Fi. Я хочу, чтобы SD-карта была подключена к моему ноутбуку, и я хочу отредактировать файл с информацией о конфигурации Wi-Fi, чтобы мой Pi автоматически подключался к моей сети при запуске, чтобы я мог затем SSH получить контроль. Благодаря этому ответу я знаю, как включить SSH в автономной системе .

Редактировать . Я искал вокруг, и мне интересно, смогу ли я просто отредактировать файл, /etc/network/interfacesпока SD-карта в моем ПК, и вставить в него все сетевые файлы ssid, psk и wlan0. Будет ли это работать? Спасибо

11chubby11
источник
Вы столкнулись с довольно затруднительным положением там. Я бы предложил временно использовать USB LAN для подключения через SSHS. Большинство драйверов включены для тех. Вставьте свой WiFi, а затем следуйте этому ответу, чтобы настроить WiFi на Pi. После перезагрузки компьютера отключите локальную сеть и загрузитесь с помощью Wi-Fi. Он должен автоматически подключиться в течение нескольких минут.
Петр Кула
2
Недорогой способ настройки заключается в использовании USB-последовательного адаптера для подключения к последовательному порту в заголовке GPIO. Вам даже не нужно включать ssh, чтобы сделать это
Джон Ла Руи,
см. мой ответ [здесь] [1] для альтернативного метода [1]: raspberrypi.stackexchange.com/a/31397/30719
memebrain

Ответы:

241

Здесь есть несколько отличных ответов, но многие устарели. С мая 2016 года Raspbian может копировать информацию о Wi-Fi /boot/wpa_supplicant.confв /etc/wpa_supplicant/wpa_supplicant.confавтоматическую настройку доступа к беспроводной сети:

Если файл wpa_supplicant.conf помещен в каталог / boot /, он будет перемещен в каталог / etc / wpa_supplicant / при следующей загрузке системы, перезаписав настройки сети; это позволяет предварительно загружать конфигурацию Wifi на карту с Windows или другого компьютера, который может видеть только загрузочный раздел.

- Последнее обновление Raspbian - Raspberry Pi , 2016-05-13

Поскольку /bootраздел доступен любому компьютеру с устройством чтения SD-карт, настройка Wi-Fi теперь намного проще.

Типичный файл wpa_supplicant.conf:

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
}

Замените «your_ISO-3166-1_two-letter_country_code» на свой код страны ISO (например, CAдля Канады), «your_SSID» на имя вашей точки беспроводного доступа и «your_PSK» на ваш пароль Wi-Fi.

Если вы не хотите хранить свой пароль Wi-Fi в виде простого текста, вы можете использовать wpa_passphraseутилиту для хранения хешированного пароля:

wpa_passphrase «your_SSID»

Утилита запросит пароль и вернет шестнадцатеричное значение хеша. Обратите внимание, что этот хешированный пароль хранится без кавычек /boot/wpa_supplicant.conf, например:

psk=b76dc68cb76bfea7232e32634f859ca760cd8abeee318a346b51d3bde00b8965

Следует отметить , что country, ctrl_interfaceи update_configлинии требуется в файл , как созданный в /boot: если они отсутствуют в системе не будет подключаться к сети. Вышеупомянутый процесс может быть повторен, чтобы исправить упущения.

Этот процесс был протестирован как с Raspbian, так и с Raspbian Lite по состоянию на ноябрь 2018 года.


Кроме того, вы можете захотеть добавить доступ Secure Shell (SSH) к вашему Raspberry Pi без головы. По соображениям безопасности SSH отключен на Raspbian по умолчанию . Вы можете включить его, создав файл с именем /boot/ssh:

Для автономной настройки SSH можно включить, поместив файл с именем ssh без расширения в загрузочный раздел SD-карты. Когда Pi загружается, он ищет файл 'ssh'; если он найден, SSH включается, а затем файл удаляется. Содержимое файла не имеет значения: оно может содержать либо текст, либо вообще ничего.

- SSH (Secure Shell) - Документация по Raspberry Pi

Если вы включаете доступ по SSH, вам следует как можно скорее изменить пароль обычного пользователя pi . Поскольку пароль по умолчанию ( raspberry ) широко известен, ваш Raspberry Pi эффективно открыт для всех в вашей сети, пока вы не измените пароль. Вы можете сделать это с помощью passwdкоманды.

scruss
источник
2
Для этого решения есть два ограничения (протестировано с изображениями 2016-09-23): 1. Файл должен быть отформатирован с окончанием строки в стиле Linux (LF вместо CR LF). 2. Он не работал с изображением Raspbian light на моем Raspberry Pi 3.
user2154065
1
@ user2154065 1. Преобразуйте файл в LF с помощью Notepad ++ , щелкнув правой кнопкой мыши «Dos \ Windows» в правом нижнем углу и выбрав «Формат UNIX / OSX». 2. wpasupplicantПакет, вероятно, не включен в Raspbian Lite.
Hydraxan14
1
Теперь у меня запущено несколько машин Raspbian Lite, я уверен, что мой комментарий был неправильным: wpa_supplicant включен или может быть легко установлен.
scruss
5
@kleinfreund не включает парольную фразу в открытый текст. Запустите wpa_passphrase SSID (с вашим SSID) и введите пароль при появлении запроса. Скопируйте вывод в ваш файл wpa_supplicant.conf, удалив строку с открытым текстом и оставив только хешированную версию. (Вы можете сделать это в другой системе, чтобы у вас был файл раньше времени при настройке вашей микро SD для Pi.)
Питер Хансен
4
@scruss - ваш ответ почти правильный, пожалуйста, добавьте эту строку в wpa_supplicant.confпример выше: ctrl_interface=/var/run/wpa_supplicant я только что попробовал новый Zero W с Raspbian Strech Lite
ctekse
23

Некоторые конкретные инструкции:

Содержание /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

Содержание /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"
}

Честный. Эти два файла с заданным содержимым - то, что я использую на всех своих пи. Они загружаются и сразу подключаются к моему беспроводному роутеру. Согласование DHCP предоставляет адрес, и мой маршрутизатор разрешает имя хоста в правильный IP-адрес. Убедитесь, что назвали каждый PI соответствующим образом через /etc/hostname.

Нужна странность в interfacesфайле в конце iface default..., иначе беспроводное соединение WPA не установится.

wpa_supplicant.confФайл может иметь несколько network={записей тоже, я использовал , чтобы взять мое пи работать ... подключить его и вуаля, это связанно автомагический там тоже конфигурация работы была немного более запутанной , хотя. Включенный сюда в качестве примера, добавьте / замените следующее в wpa_supplicant.confфайле:

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"
}

По сути, он сканирует wpa_supplicant.confфайл и подключается к первой сети, которая находит, что соответствует. Очень удобно. Таким же образом можно автоматически подключиться к любой «открытой» сети. Не самое умное, но выполнимое.

lornix
источник
Мне нужно иметь статический IP-адрес также как его безголовый, и я не смогу ssh, не зная его IP-адрес. В настоящее время я имею id_str="home"в wpa_supplicant.conf и iface home inet static(статическая информация о ip под этим) в файле интерфейсов, это дает мне статический ip, но я не уверен, что это лучший способ его настроить, и его немного сбивает с толку, чтобы настроить ( и я получаю ошибку «Не удается найти устройство« дом »» при загрузке).
11chubby11
1
Я использую dyn.com (или dyndns.com), чтобы разрешить правильное имя для доступа к моим пи (ям), использую ddclient, чтобы автоматически установить имя на правильный адрес. С другой стороны, используйте свой маршрутизатор, чтобы указать статический адрес DHCP, гораздо более полезный. Я также использую upnpcd для динамической настройки параметров upnp, чтобы позволить мне подключаться к моим системам за пределами моей сети, теперь не требуется статический IP-адрес, он настраивается там, где он есть. (iface stanza может иметь только lo / eth0 / wlan0 / default в качестве опции, «home» не будет работать)
lornix
Как я могу добавить /etc/network/interfacesв SD загрузку? Просто поместите это куда-нибудь, и это скопирует это?
denislexic
В основном комментарий к ответу от lornix - чье решение я успешно использовал - так как у меня нет представителя, чтобы писать комментарии. Чтобы редактировать корневую файловую систему, вам необходимо смонтировать второй раздел, а не первый, загрузочный раздел. Я сделал: sudo mount / dev / sdc2 / mnt, после чего я мог редактировать файлы в корне / mnt, т.е. /mnt/etc/wpa_supplicant/wpa_supplicant.conf и / mnt / etc / network / interfaces и / mnt / etc / hostname (снова используя sudo). После этого перейдите в иерархию / mnt и выполните sudo umount / mnt. Затем вы можете вставить SD-карту в Rπ и загрузиться. Обратите внимание, что для этого требуется машина Linux,
Кетил Малде,
10

С ноября 2016 года SSH по умолчанию отключен в стандартных изображениях Raspbian по соображениям безопасности.

Для того, чтобы включить его, создать пустой файл с именем либо sshили ssh.txtна папке загрузки карты памяти SD (раздел fat32 доступны из окна)

Чтобы предварительно настроить параметры Wi-Fi, вы также создаете файл, который wpa_supplicant.confтам называется :

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

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

Оба эти файла могут быть созданы в Windows и отредактированы с помощью блокнота.

Затем вставьте SD-карту в пи, и вы сможете использовать SSH.

Майк Редроб
источник
Приятно видеть, что они значительно упростили настройку! Отличный ответ!
Lornix
3

Что касается РАСПБИЙСКОГО РАСТЯНКА, вы должны включить ctrl_interfaceи update_configвwpa_supplicant.conf

Чтобы получить Wi-Fi с ssh при загрузке, выполните следующие простые действия на SD-карте:

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

С содержанием:

country=AU  #omit if US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="YourNetworkSSID-1"
    psk="passwordOne"
}
  1. Размонтируйте SD-карту, вставьте пи, загрузите пи
rynop
источник
2

Вы можете использовать interfacesфайл. Загрузите в нее всю информацию о сети, поместите ее в флэш-накопитель и перезагрузите RPI. RPi принимает настройки и настраивает WiFi без необходимости дополнительного оборудования или монитора.

После этого вы можете SSH в Pi и установить VNC, чтобы получить графический интерфейс. Если вы хотите , шаг за шагом инструкции для него, проверить Option 3: Connect with WiFiна http://www.dexterindustries.com/BrickPi/getting-started/using-the-pi/

Каран
источник
Не могу заставить это работать. Не могу найти любую другую информацию в Интернете об этом способе настройки Wi-Fi.
11chubby11
Забыл упомянуть скрипт, используемый для автоматизации этого. Вот оно
Каран
2

Вы также можете настроить SD-карту, которая будет автоматически устанавливать Rasbian с предварительно настроенным WiFi-соединением на вашем Raspberry pi (настройка без Raspberry Pi). Это позволит вашему пи просто подключиться к источнику питания для его первой загрузки.

Шаг 1. Загрузите Noobs. Получите и разархивируйте последнюю версию программного обеспечения Noobs (автономная версия и сетевая установка) по адресу https://www.raspberrypi.org/downloads/.

Альтернатива: прямая ссылка на файл: http://downloads.raspberrypi.org/NOOBS_latest

На момент написания этой статьи последняя версия NOOBS была 1.4.0.

Шаг 2: Конфигурация без головы В каталоге os / удалите все остальные папки, кроме rasbian /. Фактически у вас должна быть только одна другая папка с именем Data_Partition.

В папке rasbian / отредактируйте файл flavours.json. Вы должны увидеть следующее:

{
  "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"
    }
  ]
}

Удалите часть «Raspbian - Boot to Scratch», чтобы файл в конце выглядел так:

{
  "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"
    }
  ]
}

Отредактируйте файл recovery.cmdline в корневом каталоге NOOBS и добавьте silentinstall в список аргументов. Файл должен выглядеть так в конце:

runinstaller quiet vt.cur_default=1 elevator=deadline silentinstall

Шаг 4 (необязательно): настройка пользовательской раскладки клавиатуры и языка Если вы хотите изменить раскладку клавиатуры по умолчанию (us) и / или язык по умолчанию (по умолчанию «us»), добавьте lang = XX keyboard = XX в список аргументов восстановления Файл .cmdline (XX должен быть заменен вашим языком и кодом клавиатуры, который может быть fr, de,… По умолчанию используется us).

Файл должен выглядеть так в конце:

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

Шаг 5 (необязательно): Настройка Wi-Fi Noobs Config - это инструмент, который копирует / вставляет некоторые файлы сразу после установки Rasbian. Среди прочего, этот инструмент позволяет вам предварительно настроить Wifi на вашем Pi. Тем не менее, это предполагает, что используемый вами WiFi-ключ напрямую поддерживается Raspbian.

Прежде всего, необходимо загрузить Noobs Config на GitHub ( https://github.com/procount/noobsconfig/archive/master.zip ).

Затем распакуйте noobsconfig.zip и:

  • скопируйте «customise.sh» в корневой каталог ваших файлов Noobs

  • скопируйте «os / Rasbian / partition_setup.sh» в каталог «os / Rasbian /» ваших файлов Noobs.

  • создайте папку с именем «wifi» в «os / Rasbian /»

  • скопируйте «examples / Rasbian / wifi / wifi / wpa_supplicant.conf» в каталог «
    os / Rasbian / wifi /» ваших файлов Noobs.

  • скопируйте «examples / Rasbian / wifi / Raspbian_root.txt» в
    каталог «os / Rasbian /» ваших файлов Noobs.

Последнее, что нужно сделать, - настроить wssid и psk (пароль) в wpa_supplicant.conf:

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

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

Шаг 5 (необязательно): измените пароль по умолчанию Даже если этот шаг не является обязательным, настоятельно рекомендуется изменить пароль по умолчанию для вашей настройки Rasbian.

Отредактируйте файл os / Rasbian / os.json. Это должно выглядеть так:

{
  "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"
}

Давайте изменим пароль по умолчанию в строке 9.

Шаг 5: Скопируйте файлы на свою SD-карту и загрузите Raspberry pi Copy / прошлые файлы на отформатированную FAT SD-карту.

Шаг 6: Загрузите и подключите Boot на нашей SD-карте через несколько минут (в зависимости от вашей SD-карты процесс установки может занять более 30 минут) и подключитесь к Pi через SSH.

Это...

Jeje
источник
Эти инструкции выглядят многообещающе, но в NOOBS v1.9.2 в каталоге os / Raspbian нет файла flavours.json. Поскольку основной причиной редактирования было удаление альтернативной версии, я думаю, что можно просто пропустить этот шаг, когда он не нужен.
natevw
2

Процесс установки без головы немного изменился для Raspbian Stretch и более новых версий RetroPie.

внутри загрузочного каталога ...

touch ssh

nano wpa_supplicant.conf

добавить это в wpa_supplicant.conf

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

размонтировать SD-карту и вставить в пи для загрузки

дай минутку и найди ip-адрес твоего пи

Ssh в пи

ssh pi@pi-ip-address

пароль по умолчанию - малина

Ullauri
источник
1

Вам нужно отредактировать wpa_supplicant.confфайл на SDCard (он находится в вашей дистрибутивной версии /etcили /etc/wpa_supplicantзависит от нее ). Формат файла объясняется здесь: http://linux.die.net/man/5/wpa_supplicant.conf

hogliux
источник
Но если беспроводная связь отключается, она не будет автоматически переподключаться с использованием основных настроек. Это требует использования ручного режима и роуминга с дополнительными файлами конфигурации.
Петр Кула
Ну, это должно быть достаточно для настройки, верно? Поскольку он определенно подключится при запуске wpa_supplicant, если сеть доступна. Я также думаю, что wpa_supplicant должен автоматически переподключиться, если вы потеряете сеть.
Hogliux
В дополнение к моему последнему комментарию я хотел бы добавить, что я сам использовал этот метод на малиновой модели A с новейшим Debian.
Hogliux
WPA Supplicant будет не восстановить , если вы используете AUTO, вам нужно использовать STATICс ROAMINGи определить SSID для подключения к ... , который является немного сложнее в настройке.
Петр Кула
1

Я создал инструмент сценария оболочки (к сожалению, работает только в Linux), он автоматизирует весь процесс загрузки последнего образа Raspbian, распаковки изображения, встраивания настроек wi-fi и ethernet (предоставленных пользователем) в образ, перепакования изображение и запишите его на SD-карту. Когда вы загружаете Pi с SD-карты, он сразу же подключается к вашей сети. Сценарий также имеет возможность поиска недавно настроенного Pi в сети.

Вы можете напрямую подключить ключ Wi-Fi к вашему Pi, использовать скрипт RaspImgConfig.sh, чтобы встроить Raspbian Image с учетными данными Wi-Fi и записать изображение на карту. Не нужно никакого монитора, мыши или клавиатуры.

Youtube видео об использовании инструмента: https://youtu.be/WdYb1L2WzjM

С уважением, Субхаджит Гош

Glowingthumb
источник
-2

Вы можете настроить свой пи на работу с защищенным паролем Wi-Fi и автоматически включить ssh без загрузки пи, с файлами конфигурации в разделе / ​​boot.

Я использовал это для моего AIY и сканировал сеть, используя nmap, чтобы найти мой пи.

Оттуда вы можете просто подключиться к пи.

Zanidd
источник
Вы должны по крайней мере объяснить имена необходимых файлов и их содержание, а также ссылку на дополнительную информацию.
Стив Робиллард
-3

Я думаю, что во всех этих ответах отсутствует точка зрения, что у модели RPI НЕТ Ethernet, нет Wi-Fi, поэтому независимо от того, что вы делаете, если вы не получите внешний ключ, вы не сможете подключиться к RPi через ssh. .. Лучше всего либо использовать его непосредственно на телевизоре, либо использовать его через последовательный порт на заголовках, либо, как я уже сказал, получить внешний ключ для Wi-Fi.

amigojapan
источник
5
Я думаю, что подразумевается, что он уже использует один. Можно предположить, что ОП знает, что он не может подключиться к беспроводной сети без какого-либо адаптера.
Импульс