如何使用命令行连接到WPA wifi网络?

所以基本上,当我不在X里面时,我想使用iwconfig连接到我的wifi网络。但是我只是在手册页中看不到这样做的方法。 任何的想法?

iw (list / config)只能处理WEP。

您需要提供wpa_supplicant命令的wpasupplicant包,必要时通过sudo apt-get install wpasupplicant

您将SSID和密码放入/etc/wpa_supplicant.conf

例:

 network={ ssid="ssid_name" psk="password" } 

假设您的界面是wlan0,您可以连接:

 sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext sudo dhclient wlan0 

“wext”是一个驱动程序,它将特定于每张卡; 请参阅wpa_supplicant -h 。 例子:

 hostap (default) Host AP driver (Intersil Prism2/2.5/3). (this can also be used with Linuxant DriverLoader). hermes Agere Systems Inc. driver (Hermes-I/Hermes-II). madwifi MADWIFI 802.11 support (Atheros, etc.). atmel ATMEL AT76C5XXx (USB, PCMCIA). wext Linux wireless extensions (generic). ndiswrapper Linux ndiswrapper. broadcom Broadcom wl.o driver. ipw Intel ipw2100/2200 driver. wired wpa_supplicant wired Ethernet driver roboswitch wpa_supplicant Broadcom switch driver bsd BSD 802.11 support (Atheros, etc.). ndis Windows NDIS driver. 

这个链接显示了一切,并为我工作正常: http : //linux.icydog.net/wpa.php

我在这里复制内容,所以我们拥有它,以防网站脱机。

命令行WPA

有时您会在命令行无法访问GUI网络工具 – 但您的访问点是通过WPA保护的。 你是做什么?

假设您的无线网卡实际工作(即iwconfig可以看到它并与之交互),使用wpa_supplicant实际上非常简单。 安装wpa_supplicant

现在大多数发行版都默认安装了wpa_supplicant。 如果你有命令wpa_passphrase和wpa_supplicant可用,那么你很高兴。 否则,您需要通过执行类似的操作来安装软件包(对于Ubuntu):

 $ sudo apt-get install wpasupplicant 

或者(对于Fedora):

 # yum install wpa_supplicant 

或者无论你的发行版是什么命令。

生成配置文件

现在安装了wpa_supplicant,我们将创建其配置文件。 一旦你知道SSID和WPA密码,你只需要运行:

 $ wpa_passphrase myrouter mypassphrase > wpa.conf 

当然,将“myrouter”替换为路由器的SSID,将“mypassphrase”替换为您的WPA密码,将“wpa.conf”替换为您要存储配置的任何文件。此文件名不必遵循特定格式或有一个特定的扩展。

或者,为了避免在命令行上键入密码(因此它不会保存在shell的历史记录中),您可以在命令行上仅指定SSID。 wpa_passphrase将等待您键入密码,然后输入:

 $ wpa_passphrase myrouter > wpa.conf mypassphrase 

您应该得到一个如下所示的文件:

 network={ ssid="myrouter" #psk="mypassphrase" psk=8ada1f8dbea59704ac379538b4d9191f6a72390581b4cd7a72864cea685b1a7f } 

建立联系

现在我们将实际运行wpa_supplicant以连接到无线网络。 首先,如果您的路由器广播其SSID(默认情况下都是这样),您可能希望确保您的无线网卡能够真正看到它:

 $ iwlist scan 

您可能必须以root身份运行它以强制刷新。

接下来,您需要了解三条信息:

  1. 哪种wpa_supplicant无线驱动程序可用于您的卡。 运行wpa_supplicant –help列出它拥有的不同驱动程序(在“drivers:”下)。 从0.5.8开始,有用的选择是:wext,hostap,madwifi,atmel,ndiswrapper和ipw(ipw仅用于旧内核;> = 2.6.13应该使用wext)。 如果你没有看到你的卡的特定匹配,请尝试wext,因为这是一种全能的。
  2. 你卡的网络设备。 这通常是eth1或wlan0,但是如果你不确定你可以运行iwconfig。 它将报告非无线设备的“无无线扩展”,并将显示任何无线设备的一些数据。
  3. 您在上一步中创建的配置文件的路径。

现在你有这些数据,运行(以root身份):

 # wpa_supplicant -D[driver] -i[device] -c[/path/to/config] 

选项和参数之间没有空格。 不要包括括号,因为为了清楚起见我刚添加了这些括号。 例如,对于我的笔记本电脑,它看起来像这样:

 # wpa_supplicant -Dwext -ieth1 -c/root/wpa.conf 

您也可以使用-B选项在后台运行它,这样它就不会占用您的控制台。

现在,您已与网络相关联。

上网

要真正上网,你必须以某种方式获得IP。 大多数人只想从DHCP服务器获取动态IP,可能是路由器中内置的。 (我不打算介绍设置静态IP和路由表,因为这本身就是一个野兽。)

要获得DHCP租约,首先要发布您仍然持有的任何租约(以root身份):

 # dhclient -r 

然后要求新的租约(当然用您的网络设备的名称替换eth1,与您在上一节中使用的相同):

 # dhclient eth1 

至少在理论上你现在拥有IP。 快乐冲浪!

Debian和其他发行版默认运行wpa_suplicant作为服务来管理wifi网络。 wpa_suplicant可以由不同的客户端/前端处理,例如网络管理器GUI。 这个在debian wiki中有更好的解释。

wpa_cli是管理wifi网络的命令行wpa_suplicant客户端。

编辑 :我刚刚发现这篇文章解释了如何使用nmcli ,它比wpa_cli好得多,因为它与GUI网络管理器及其设置和保存的wifi网络兼容。

使用wpa_cli的示例

检查我是否已启用wifi网络接口:

 # iwconfig wlan0 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=22 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:on 

检查wpa_suplicant进程是否正在运行:

 # ps -e | grep wpa 1881 ? 00:00:07 wpa_supplicant 

输入wpa客户端交互模式:

 # wpa_client 

列出可用的接入点:

 > scan > scan_results 

……你得到这样的东西:

 bssid / frequency / signal level / flags / ssid e0:60:66:7c:81:7f 2417 -66 [WPA2-PSK-CCMP][ESS] vodafone817E e0:60:66:61:83:4b 2452 -76 [WPA2-PSK-CCMP][WPS][ESS] vodafone834A f8:8e:85:c5:65:c2 2462 -76 [WPA-PSK-CCMP+TKIP][WPS][ESS] MOVISTAR_65C1 a8:d3:f7:46:0c:be 2472 -83 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS] Orange-0CBC ... 

添加你的AP:

 > add_network > set_network 0 ssid "vodafone817E" > set_network 0 psk "my-pass-phrase" 

选择它为当前:

 > enable_network 0 

连接到它:

 > reconnect 

检查状态:

 > status 

退出wpa_cli:

 > quit 

在shell中,请求DHCP以获取IP和网络设置:

 # dhclient -r # dhclient wlan0 

如果它不是runnig,首先给你的卡买单:

 ifconfig wlan0 up 

根据您的网络设置参数

 iwlist wlan0 scan iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY 

如果您安装了checkbox ,实际上有一种方法可以使用NetworkManager。

 sudo /usr/share/checkbox/create_connection SSID --security=wpa -key=WPA-KEY 

(信用: 错误923836 ,在我对该主题的搜索中出现。)

所有提出wpa_supplicant的答案都是错误的。 是的,它可能会将您连接到WPA网络,但从长远来看这是一个糟糕的解决方案,因为它很难维护,并且不能很好地使用有线连接。 阅读此答案 ,从命令行使用网络管理器,让您的生活更轻松。 我浪费了几个小时试图配置wpa_supplicant,然后尝试了nmcli并且它“正常工作”。

您可以使用VSWM – 非常简单的无线管理器。 您将已知的AP放在一个简单的cfg文件(/etc/vswm.cfg)上,当您运行vswm它会扫描可用的网络,并将您的卡与/etc/vswm.cfg上显示的第一个连接。

VSWM可从https://github.com/dmelo/vswm获得 。 以下是vswm.cfg配置文件的样子:

 [global] dev = wlan0 dns = ["4.2.2.1","8.8.8.8"] [wlan0-0] ssid = Network1 psk = netpassword protocol = WPA net = dhcp [wlan0-1] ssid = Network2 protocol = WEP net = static address = 192.168.0.15/24 

在引擎盖下,它使用标准的命令行工具:iwlist,wpa_supplicant,iwconfig,dhclient ……只有它自动完成工作。

我无法直接使用wpa_supplicant进入无线网络。 当我在wpa_supplicant命令行上使用wpa_supplicant.conf文件时,我的网络ID和密码生成错误,例如

 sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B 

我能够用wpa_cli解决这个wpa_cli 。 我必须使用的命令序列,因为我使用Linux驱动程序与Linux ndiswrapper,是:

 sudo modprobe ndiswrapper sudo iwconfig wlan0 essid "" mode managed sudo wpa_cli identity "" password "" 

我通过将其添加到GUI中的网络无线部分来设置网络,以便我可以单击有线或无线网络图标并选择无线提供商(有时需要完成登录)。

nmcli是Ubuntu上默认网络管理器应用程序的命令行版本。

一些优点是它使用您已经从图形界面获得的配置,并且它不需要root访问权限。

您可以运行nmcli来显示可用选项。

连接到名为MYESSID的wifi的示例:

  nmcli c up MYESSID