为Headless Pi上的Wifi准备SD卡


158

我需要通过WIFI SSH我的Pi,但是因为它是A型板(不可能使用USB集线器-曾经)并且我没有以太网,所以我无法配置Pi以连接到我的安全wifi网络。我想将SD卡插入笔记本电脑,并想编辑其中包含wifi配置信息的文件,这样我的Pi在启动时会自动连接到我的网络,因此我可以通过SSH进行控制。由于这个答案,我知道如何在无头系统上启用SSH 。

编辑。我一直在搜寻,我想知道是否可以/etc/network/interfaces在SD卡在我的PC中的同时编辑文件,并将所有网络ssid,psk和wlan0放入其中。这样行吗?谢谢


你在那里面临着相当的困境。我建议暂时使用USB LAN通过SSHS连接。大多数驱动程序都包括那些。插入您的WiFi,然后按照此答案在Pi上设置WiFi。病房重新启动后,请拔掉LAN的插头,然后使用Wifi进行启动。它会在几分钟内自动连接。
Piotr Kula 2013年

2
低成本的设置方法是使用USB串行适配器连接到GPIO接头上的串行。您甚至不需要启用ssh即可执行
John La Rooy

看到我的答案[这里] [1]的替代方法[1]:raspberrypi.stackexchange.com/a/31397/30719
memebrain

Answers:


237

这里有一些很好的答案,但是许多已经过时了。自2016年5月以来,Raspbian能够将wifi详细信息从复制/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卡读卡器的任何计算机访问,因此wifi配置现在更加简单。

典型的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”替换为wifi密码。

如果您不想以纯文本格式存储您的wifi密码,则可以使用该wpa_passphrase实用工具来存储哈希密码:

wpa_passphrase «your_SSID»

该实用程序将提示您输入密码,并将返回十六进制哈希值。请注意,此散列密码存储在中,但没有引号/boot/wpa_supplicant.conf,例如:

psk=b76dc68cb76bfea7232e32634f859ca760cd8abeee318a346b51d3bde00b8965

需要注意的是countryctrl_interfaceupdate_config线需要在文件中创建/boot:如果缺少系统将无法连接到网络。可以重复上述过程以纠正遗漏。

截至2018年11月,此过程已经在Raspbian和Raspbian Lite中进行了测试。


此外,您可能希望向无头Raspberry Pi 添加安全Shell(SSH)访问。出于安全原因,默认情况下在Raspbian上禁用SSH。您可以通过创建一个名为的文件来启用它/boot/ssh

对于无头设置,可以通过将名为“ ssh”的文件(没有任何扩展名)放置到SD卡的引导分区上来启用SSH。当Pi启动时,它会寻找“ ssh”文件。如果找到,则启用SSH,然后删除该文件。文件的内容无关紧要:它可以包含文本,也可以不包含任何内容。

SSH(安全外壳)-Raspberry Pi文档

如果启用SSH访问,则应尽快更改标准pi用户的密码。由于默认密码(raspberry)是众所周知的,因此您的Raspberry Pi可以有效地向网络上的所有人开放,直到您更改密码为止。您可以使用passwd命令执行此操作。


2
此解决方案有两个限制(已使用2016-09-23图像进行了测试):1.文件必须使用Linux样式行结尾(LF而不是CR LF)格式化。2.没有与Raspbian光图像在我的树莓派3.工作
user2154065

1
@ user2154065 1. 右键单击右下角的“ Dos \ Windows”,然后选择“ UNIX / OSX格式”,使用Notepad ++将文件隐蔽到LF 。2.该wpasupplicant软件包可能未包含在Raspbian Lite中。
Hydraxan17年

1
现在,我有几台Raspbian Lite计算机正在运行,我敢肯定我的评论是错误的:wpa_supplicant已包含在内,或者可以轻松安装。
scruss

5
@kleinfreund不要在明文中包含密码。运行“ wpa_passphrase SSID”(使用您的SSID),并在出现提示时输入密码。将输出复制到wpa_supplicant.conf文件中,删除包含明文的行,仅保留哈希版本。(您可以在其他系统上执行此操作,以便在为Pi设置micro SD时提前保存文件。)
Peter Hansen

4
@scruss-您的答案几乎是正确的,请将此行添加到wpa_supplicant.conf上面的示例中: ctrl_interface=/var/run/wpa_supplicant 我刚刚尝试过使用Raspbian
Strech

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

诚实。这两个文件,具有给定的内容,是我在所有pi上使用的文件。他们启动并立即连接到我的无线路由器。DHCP协商提供了一个地址,我的路由器将主机名解析为正确的IP地址。确保通过适当地命名每个PI /etc/hostname

interfaces尾随文件中的文件很奇怪iface default...,否则将无法建立无线WPA连接。

wpa_supplicant.conf文件也可以有多个network={条目,我过去常常带我的pi来工作...插入并瞧瞧,它也在那里自动连接,但是工作的配置有些复杂。作为示例,在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文件并连接到发现匹配的第一个网络。非常便利。也可以通过这种方式使其自动连接到任何“开放”网络。不是最聪明的事情,而是可行的。


我还需要一个静态IP,因为它没有头,并且我将无法在不知道其IP地址的情况下使用它。我目前id_str="home"在wpa_supplicant.conf和iface home inet static(位于其下的静态ip信息)接口文件中,这给了我一个静态ip,但是我不确定这是否是设置它的最佳方法,并且设置起来有些混乱(并且在启动时收到错误消息“找不到设备“家””。
2013年

1
我使用dyn.com(或dyndns.com)允许使用正确的名称访问我的pi,使用ddclient自动将名称设置为正确的地址。或者,使用路由器指定一个静态dhcp地址,该地址要有用得多。我还使用upnpcd动态设置upnp设置,以允许我从网络外部连接到系统,现在不再需要静态IP,无论它在哪里,它都可以自行设置。(iface节只能将lo / eth0 / wlan0 / default作为选项,“ home”将不起作用)
lornix

如何添加/etc/network/interfacesSD引导?只需将其放在任何地方,它将复制它?
denislexic

基本上是对lornix答案的评论-我成功使用了其解决方案-因为我没有代表来写评论。为了编辑根文件系统,您需要安装第二个分区,而不是第一个引导分区。我做了:sudo mount / dev / sdc2 / mnt之后,我可以在/ mnt根目录下编辑文件,即/mnt/etc/wpa_supplicant/wpa_supplicant.conf和/ mnt / etc / network / interfaces和/ mnt / etc / hostname (再次使用sudo)。完成后,将CD从/ mnt层次结构中移出,然后执行sudo umount / mnt。然后可以将SD卡插入Rπ并启动。请注意,这需要一台Linux机器,
Ketil Malde,

10

自2016年11月起,出于安全原因,默认情况下已在标准Raspbian映像中禁用SSH。

要重新启用它,请在sd卡启动文件夹(可从Windows访问的fat32分区)上创建一个名为ssh或的空白文件。ssh.txt

要预配置wifi设置,您还创建了一个名为There的文件wpa_supplicant.conf,其中包含:

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

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

这两个文件都可以在Windows上创建,并使用记事本进行编辑。

然后将SD卡插入pi,您应该可以直接使用SSH。


很高兴看到他们大大简化了设置!好答案!
lornix

3

作为RASPBIAN舒展你必须包括ctrl_interfaceupdate_configwpa_supplicant.conf

要在启动时通过ssh获得wifi,请在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卡,放入pi,启动pi

2

您可以使用该interfaces文件。加载所有网络信息,并将其放入拇指驱动器,然后使用它重新启动RPi。RPi无需额外的硬件或显示器即可进行设置并设置WiFi。

之后,您可以SSH进入Pi并安装VNC以获取GUI。如果你想一步步为它一步的指示,请Option 3: Connect with WiFihttp://www.dexterindustries.com/BrickPi/getting-started/using-the-pi/


无法解决这个问题。无法在互联网上找到有关此设置wifi的任何其他信息。
11chubby11

忘记提及用于自动执行此操作的脚本。这是
karan

2

您还可以配置SD卡,该卡将在Raspberry pi(Raspberry Pi无头安装程序)上通过预先配置的WiFi连接自动安装Rasbian。这样一来,您的pi就可以在首次启动时刚刚接通电源。

步骤1:下载Noobshttps://www.raspberrypi.org/downloads/上获取并解压缩最新的Noobs软件(离线版本和网络安装版本)。

替代方法:直接链接到文件: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"
    }
  ]
}

编辑根NOOBS目录中的recovery.cmdline文件,并将silentinstall附加到参数列表中。文件结尾应如下所示:

runinstaller quiet vt.cur_default=1 elevator=deadline silentinstall

步骤4(可选):配置自定义键盘布局和语言 如果要更改默认键盘布局(美国)和/或默认语言(默认为“我们”),请在恢复的参数列表中附加lang = XX keyboard = XX .cmdline文件(XX应该用您的语言和键盘代码代替,可以是fr,de,……默认为我们)。

文件结尾应如下所示:

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

步骤5(可选):配置Wifi Noobs Config是一个工具,它将在安装Rasbian之后立即复制/粘贴一些文件。除其他外,该工具还允许您在Pi上预配置Wifi。尽管如此,这仍假定Raspbian直接支持您使用的wifi加密狗。

首先是在GitHub(https://github.com/procount/noobsconfig/archive/master.zip)上下载Noobs Config。

然后解压缩noobsconfig.zip和:

  • 在您的Noobs文件的根目录中复制“ customise.sh”

  • 将“ os / Rasbian / partition_setup.sh”复制到Noobs文件的“ os / Rasbian /”目录中。

  • 在“ os / Rasbian /”下创建一个名为“ wifi”的文件夹

  • 将“ Examples / Rasbian / wifi / wifi / wpa_supplicant.conf”复制到
    Noobs文件的“ os / Rasbian / wifi /”目录中。

  • 将“ Examples / Rasbian / wifi / Raspbian_root.txt”复制到
    Noobs文件的“ os / Rasbian /” 目录中。

最后一件事是在wpa_supplicant.conf中配置您的wifi上网ssid和psk(密码):

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复制/粘贴FAT格式的SD卡上的文件。

步骤6:引导并连接 几分钟后(取决于您的SD卡,安装过程可能需要30分钟以上),然后在我们的SD卡上引导,然后通过SSH连接到您的Pi。

那个...


这些指令看起来很有希望,但是从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卡并插入pi进行启动

请稍等一下,找到您的pi的IP地址

ssh进入pi

ssh pi@pi-ip-address

默认密码是树莓派


1

您需要编辑wpa_supplicant.confsdcard上的文件(该文件位于/etc/etc/wpa_supplicant取决于您的发行版本)。该文件的格式在这里说明:http : //linux.die.net/man/5/wpa_supplicant.conf


但是,如果无线掉线,它将无法使用基本设置自动重新连接。它要求您使用手动模式并与其他配置文件一起漫游。
Piotr Kula 2013年

好吧,设置就足够了吧?因为如果网络可用,它将在wpa_supplicant启动时肯定会连接。我还认为,如果网络松动,wpa_supplicant应该自动重新连接。
hogliux13年

除了我的最后评论,我想补充一点,我已经在带有最新debian的树莓模型A上使用了此方法。
hogliux13年

WPA请求将无法重新连接,如果你使用AUTO,你需要使用STATICROAMING和定义的SSID接入......这是一个有点棘手成立。
Piotr Kula 2013年

1

我创建了一个外壳脚本工具(不幸的是仅在Linux上运行),它自动完成了下载最新Raspbian映像,解压缩映像,将wi-fi和以太网设置(由用户提供)嵌入映像,重新打包的全过程。映像并将其刻录到SD卡上。当您使用SD卡启动Pi时,它会立即与您的网络连接。该脚本还具有在网络上搜索新配置的Pi的功能。

您可以将Wi-Fi加密狗直接与您的Pi连接,使用RaspImgConfig.sh脚本将具有wi-fi凭据的Raspbian图像嵌入并在卡上刻录图像。无需任何显示器,鼠标或键盘。

使用该工具的YouTube视频:https : //youtu.be/WdYb1L2WzjM

此致Subhajit Ghosh


-2

您可以将pi设置为使用受密码保护的wifi,并使用/ boot分区中的配置文件来自动启用ssh而不启动pi。

我将其用于AIY,并使用nmap扫描了网络以查找我的pi。

从那里您可以直接连接到pi。


您至少应说明所需的文件名及其内容,以及指向更多信息的链接。
史蒂夫·罗比拉德

-3

我认为所有这些答案都缺少RPi模型A没有以太网,没有wi-fi的观点,因此,无论您做什么,除非获得外部加密狗,否则您将无法通过ssh连接到RPi。 ..最好的选择是直接在电视上使用它,或者通过插头上的串行端口使用它,或者如我所说,获得一个用于wifi的外部加密狗。


5
我认为这暗示他已经在使用一个。可以假设OP意识到没有某种适配器就无法连接到无线网络。
Impulss
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.