Answers:
iw
(列表/配置)只能处理WEP。
您需要wpasupplicant
提供wpa_supplicant
命令的软件包,必要时通过安装sudo apt-get install wpasupplicant
。
您将您的SSID和密码放入/etc/wpa_supplicant.conf
(需要sudo)。
例:
network={
ssid="ssid_name"
psk="password"
}
假设您的接口是wlan0,则可以连接:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D wext
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.
wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0
没有连接到无线网络,尽管默认情况下NetworkManager将我连接到网络,但我想尝试命令行方式,这是我做的一些错误吗?
root
(系统管理员)身份运行。因此,sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0
或将它们分为两个命令&&
。
该链接显示了所有内容并为我很好地工作: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用户身份运行才能强制刷新。
接下来,您将需要了解以下三点信息:
wpa_supplicant --help
列出了它具有的不同驱动程序(在“驱动程序:”下)。作为0.5.8,有用的选择是:wext
,hostap
,madwifi
,atmel
,ndiswrapper
,和ipw
(IPW仅用于旧的内核;> = 2.6.13应该使用w外)。如果您没有看到与卡片特定的匹配项,请尝试使用wext,因为这很普遍。iwconfig
。它将报告非无线设备的“无无线扩展”,并显示任何无线设备的一些数据。现在,您已经有了这些数据,以root身份运行:
# wpa_supplicant -D[driver] -i[device] -c[/path/to/config]
选项和参数之间没有空格。为了清楚起见,请不要添加括号,因为我只是添加了这些括号。例如,对于我的笔记本电脑,它看起来像这样:
# wpa_supplicant -Dwext -ieth1 -c/root/wpa.conf
您也可以通过使用该-B
选项在后台运行它,以免占用控制台。
现在,您已与网络关联。
上网
要真正上线,您必须以某种方式获得IP。大多数人只想从DHCP服务器(可能是路由器内置的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_cli
列出可用的接入点:
> 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
在命令行管理程序中,请求DHCP提供IP和网络设置:
# dhclient -r
# dhclient wlan0
wpa_cli
然后写wpa_client
?在Kubuntu上18.10 wpa_client
似乎不作为命令存在
如果不是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
(信贷:bug 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.conf
在wpa_supplicant
命令行上使用文件时,我的网络ID和密码生成了错误,例如
sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B
我能够与解决它wpa_cli
。由于我将Windows驱动程序与Linux ndiswrapper一起使用,因此必须使用的命令序列为:
sudo modprobe ndiswrapper
sudo iwconfig wlan0 essid "<My Network ID>" mode managed
sudo wpa_cli identity "<My Network ID>" password "<My password>"
通过在GUI的网络的无线部分中添加网络来设置网络,以便可以单击有线或无线网络图标并选择无线提供商(有时需要完成登录)。