当前位置: 首页>>技术教程>>正文


如何使用命令行连接到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 – 帮助列出它具有的不同驱动程序(在”drivers:”下)。从0.5.8开始,有用的选择是:wext,hostap,madwifi,atmel,ndiswrapper和ipw(ipw仅适用于旧内核;> = 2.6.13应该使用wext)。如果您没有看到特定的卡匹配,请尝试使用文本,因为这是catch-all。

  2. 您的卡的网络设备。这通常是eth1或wlan0,但是如果你不确定你可以运行iwconfig。它将为non-wireless设备报告“无线扩展”,并将显示任何无线设备的一些数据。

  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。 (我不打算设置静态IP和路由表,因为这本身就是一个野兽。)

为了获得DHCP租约,首先释放您仍然持有的任何租约(以root身份):

# dhclient -r

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

# dhclient eth1

至少在理论上你现在拥有知识产权。快乐冲浪!

第三种解决方案

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

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

编辑:我刚刚发现这篇文章解释how to use nmcli,它比wpa_cli更好,因为它与GUI网络管理器及其设置和保存的无线网络兼容。

使用wpa_cli的示例:

检查我是否已经有无线网络接口:

# 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

(信用:bug 923836,在我的主题搜索中出现)。

第六种方案

所有建议wpa_supplicant的答案都是错误的。是的,它可能会将您连接到WPA网络,但从长远来看,这是一个糟糕的解决方案,因为它将很难维护,并且无法与有线连接良好地配合。阅读this answer,并通过命令行使用Network Manager使您的生活更轻松。我浪费了几个小时试图配置wpa_supplicant,然后尝试nmcli和它”just worked”。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/693.html,未经允许,请勿转载。