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

100

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

    
задан Ken Kinder 17.05.2012 в 17:48
источник

9 ответов

95

iw (list / config) может обрабатывать только WEP.

Вам нужен пакет wpasupplicant , который предоставляет команду wpa_supplicant , при необходимости установите через 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.
    
ответ дан Rinzwind 17.05.2012 в 17:57
источник
68

Эта ссылка показывает все это и отлично работает для меня: Ссылка

Я копирую содержимое здесь, поэтому у нас оно есть, если сайт отключен.

Командная строка 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, теоретически, по крайней мере. Счастливый серфинг!

    
ответ дан Alexandre Schmidt 08.04.2013 в 21:44
5

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

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

Изменить . Я только что нашел это сообщение, объяснив как использовать nmcli , и это намного лучше, чем wpa_cli, поскольку он совместим с GUI Network Manager и их настройками и сохраненными сетями 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_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

Из оболочки запросите DHCP для IP-и сетевых настроек:

# dhclient -r
# dhclient wlan0
    
ответ дан David 06.10.2016 в 18:12
3

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

ifconfig wlan0 up

Задайте параметры, соответствующие вашей сети.

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
    
ответ дан LnxSlck 17.05.2012 в 17:54
2

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

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

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

    
ответ дан zigg 17.05.2012 в 18:32
2

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

    
ответ дан Cerin 26.07.2015 в 00:23
2

Вы можете использовать VSWM - Very Simple Wireless Manager. Вы помещаете свои известные точки доступа в простой файл cfg (/etc/vswm.cfg), и когда вы запускаете vswm , он просматривает доступные сети и подключает вашу карту с первой, которая появляется на /etc/vswm.cfg.

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 ... Только автоматизирует задание.

    
ответ дан Diogo Melo 18.09.2016 в 05:42
1

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

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

    
ответ дан John 03.12.2013 в 07:46
0

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

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

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

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

    nmcli c up MYESSID   
    
ответ дан desgua 31.01.2018 в 13:46