Как подключиться к Wi-Fi сети WPA с помощью командной строки?

Так что, в принципе, я хотел бы использовать iwconfig для подключения к моей сети Wi-Fi, когда я не в X. Но я просто не вижу способа сделать это на странице руководства. Есть идеи?

117
задан 17 May 2012 в 19:48

9 ответов

iw (list / config) может обрабатывать только 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.
0
ответ дан 17 May 2012 в 19:48

Все ответы о wpa_supplicant неверны. Да, он может подключить вас к сети WPA, но в конечном итоге это плохое решение, потому что его будет очень сложно поддерживать и он не будет хорошо работать с проводным соединением. Прочтите этот ответ и упростите свою жизнь, используя Network Manager из командной строки. Я потратил часы, пытаясь настроить wpa_supplicant, затем попробовал nmcli, и он «просто работал».

0
ответ дан 17 May 2012 в 19:48

В Debian и других дистрибутивах wpa_suplicant по умолчанию работает как сервис для управления сетями Wi-Fi. wpa_suplicant может обрабатываться разными клиентами / внешними интерфейсами, такими как графический интерфейс администратора сети. Это лучше объяснено в этой вики Debian .

wpa_cli - это клиент командной строки wpa_suplicant для управления сетями Wi-Fi.

Редактировать : я только что нашел этот пост, объясняющий , как использовать nmcli , и он намного лучше, чем wpa_cli, поскольку он совместим с менеджером сети GUI, их настройками и сохраненным Wi-Fi. сетей.

Пример использования wpa_cli :

Проверьте, что у меня уже есть сетевой интерфейс с поддержкой Wi-Fi:

# 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
0
ответ дан 17 May 2012 в 19:48

Сначала поднимите карту, если она не запущена:

ifconfig wlan0 up

Установите параметры в соответствии с вашей сетью

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
0
ответ дан 17 May 2012 в 19:48

У меня были проблемы с использованием wpa_supplicant напрямую для подключения к беспроводной сети. Мой идентификатор сети и пароль генерировали ошибки, когда я использовал файл wpa_supplicant.conf в командной строке wpa_supplicant, например

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

Я настроил сеть, добавив ее в беспроводную секцию сети в графическом интерфейсе, чтобы я мог щелкнуть значок проводной или беспроводной сети и выбрать поставщика услуг беспроводной связи (который иногда был необходим для завершения входа в систему).

0
ответ дан 17 May 2012 в 19:48

nmcli - это версия командной строки стандартного приложения сетевого менеджера в Ubuntu.

Некоторые из преимуществ заключаются в том, что он использует конфигурацию, уже имеющуюся у вас в графическом интерфейсе, и ему не требуется root-доступ.

Вы можете запустить nmcli, чтобы показать доступные опции.

Пример подключения к Wi-Fi с именем MYESSID:

    nmcli c up MYESSID   
0
ответ дан 17 May 2012 в 19:48

Вы можете использовать VSWM - Very Simple Wireless Manager. Вы помещаете свои известные точки доступа в простой файл 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 ... Только он автоматизирует работа.

0
ответ дан 17 May 2012 в 19:48

Есть способ сделать это с помощью NetworkManager, если у вас установлен пакет checkbox.

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

(Кредит: , ошибка 923836 , которая появилась в моих поисках по теме.)

0
ответ дан 17 May 2012 в 19:48

Эта ссылка показывает все это и хорошо работала для меня: 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" с любым файлом, в котором Вы хотите хранить конфигурацию. Это имя файла не должно следовать за конкретным форматом или иметь конкретное расширение.

С другой стороны, чтобы не вводить пароль на командной строке (таким образом, это не становится сохраненным в истории оболочки), можно указать просто SSID на командной строке. wpa_passphrase будет ожидать Вас для ввода в пароле, сопровождаемом, войдите:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Необходимо закончить с файлом, бывшим похожим на это:

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

Подключение

Теперь мы на самом деле выполним wpa_supplicant для соединения с беспроводной сетью. Во-первых, если Ваш маршрутизатор широковещательно передает свой SSID (они все делают по умолчанию), Вы, вероятно, хотите удостовериться, что Ваша беспроводная карта может на самом деле видеть его:

$ iwlist scan

Вам, возможно, придется выполнить это как корень для принуждения обновления.

Затем, необходимо будет знать три сведения:

  1. Какие wpa_supplicant драйверы беспроводных устройств использовать для Вашей карты. Выполнение wpa_supplicant --help перечисляет различные драйверы, которые это имеет (под "драйверами":). С 0.5.8, полезный выбор: wext, hostap, madwifi, atmel, ndiswrapper, и ipw (ipw для старых ядер только;> =2.6.13 должен использовать wext). Если Вы не видите определенного соответствия для своей карты, попробуйте wext, поскольку это - вид вместилища.
  2. Сетевое устройство Вашей карты. Это обычно eth1 или wlan0, но если Вы не уверены, можно просто работать iwconfig. Это не сообщит "ни о каких беспроводных расширениях" для небеспроводных устройств и отобразит некоторые данные для любых беспроводных устройств.
  3. Путь к конфигурационному файлу, который Вы создали на предыдущем шаге.

Теперь, когда Вы имеете эти данные, работаете (как корень):

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

Нет никаких пробелов между опциями и параметрами. Не включайте скобки, поскольку я просто добавил скобки для ясности. Например, для моего ноутбука это похоже на это:

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

Можно также выполнить его в фоновом режиме при помощи -B опция так, чтобы это не поднимало Вашу консоль.

Теперь Вы связаны с сетью.

Получение, онлайн

Для фактического получения онлайн необходимо будет получить IP так или иначе. Большинство людей просто захочет получить динамический IP от сервера DHCP, вероятно, тот, встроенный в маршрутизатор. (Я не собираюсь покрывать установку статического IP и таблицы маршрутизации, потому что это - зверь сам по себе.)

Для получения арендного договора DHCP сначала выпустите любые арендные договоры, которые Вы все еще держите на (как корень):

# dhclient -r

Затем попросите новый арендный договор (конечно, заменяющий eth1 с названием Вашего сетевого устройства, тот же, когда Вы использовали в предыдущем разделе):

# dhclient eth1

У Вас теперь есть IP в теории, по крайней мере. Счастливое перемещение!

73
ответ дан 17 May 2012 в 19:48

Другие вопросы по тегам:

Похожие вопросы: