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

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

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.

Эта ссылка показывает все это и прекрасно работает для меня: 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

Возможно, вам придется запустить это как 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. Большинство людей просто хотят получить динамический IP-адрес от DHCP-сервера, возможно, встроенного в маршрутизатор. (Я не собираюсь рассказывать об установке статического IP-адреса и таблицы маршрутизации, потому что это само по себе чудовище.)

Чтобы получить аренду DHCP, сначала освободите все аренды, которые вы все еще держите (от имени root):

# dhclient -r

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

# dhclient eth1

Теперь у вас есть IP, по крайней мере, в теории. Приятного серфинга!

В 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

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

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

ifconfig wlan0 up

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

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

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

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

Вы можете запустить nmcli показать доступные варианты.

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

    nmcli c up MYESSID   

Вы можете использовать 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... Только это автоматизирует работу.

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

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

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

У меня были проблемы с использованием 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>"

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

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