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


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


99
2018-05-17 15:48


происхождения


Связанный: Инструмент командной строки для простого изменения реальной беспроводной сети, подключенной к сети? на softwarerecs SE - kenorb


ответы:


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.

95
2018-05-17 15:57



хорошо, что хорошо, что iwlist / iwconfig может обрабатывать только WEP, но в моем случае wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0  не подключился к беспроводной сети, хотя по умолчанию NetworkManager соединяет меня с сетью, я хочу попробовать способ командной строки, есть ли какая-то ошибка, которую я делаю? - Registered User
Последняя команда на самом деле представляет собой две команды, и вам нужно root (Системный администратор). Так sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0  или разделить их на две команды вокруг &&, - Anders
Это решение дает мне ошибку «wlan0: Unsupported driver» ext ». - Cerin
@cerin, вы понимаете, что это для WPA, а не WEP;) - Rinzwind
@Rinzwind, Yes ... Просматривая man-страницу wpa_supplicant, вы увидите, что драйвер может отличаться, поэтому ваша команда, скорее всего, не будет работать, как буквально. Вы должны выбрать -D <driver> для своего конкретного оборудования. Для меня это оказалось «nl80211». - Cerin


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


68
2018-04-08 19:44



FYI для неопытных людей, большинство имен интерфейса беспроводной карты будут wlan <number>, поэтому, например, первая беспроводная карта в вашей конфигурации будет wlan0 вместо eth1 - xorinzor
Спасибо, команда wpa_passphrase помогла. Я попробовал принятый ответ, но файл был неправильным, wpa_passphrase помог с этим, а затем я просто передал вторую команду из принятого ответа (я уже точно знал, что он называется wlan0) ... - Lilian A. Moraru
спасибо, что было действительно здорово, можно ли дать ссылку на ссылку, как настроить статическую и маршрутную таблицу ... :) - Yassine
@AlexandreSchmidt +1 за то, что он всеобъемлющий! - John Strood


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

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

редактировать: Я только что нашел этот пост, объясняющий как использовать 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

5
2017-10-06 16:12





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

ifconfig wlan0 up

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

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

3
2018-05-17 15:54



Я считаю, что это только для WEP. Нет WPA;) - Rinzwind
Ринзвинд прав. Это для WEP. Извините за ошибку. - LnxSlck
без проблем. Оставьте это здесь, и кто-то когда-нибудь выиграет от вашего ответа;) - Rinzwind
будет ли это работать даже без ключа, такого как открытая сеть? - EvoandroidEvo
Надеюсь, никто никогда не выиграет от конкретного ответа WEP: '( - Max Ried


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

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

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


2
2018-05-17 16:32





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


2
2017-07-25 22:23



Проблема с вещами «просто работа» заключается в том, что они могут легко «просто не работать», а затем где вы. Для людей с CLI прямой подход wpa_supplicant лучше, потому что он раскрывает все его части. Великая добродетель НМ заключается в том, что все ее части скрыты. Поэтому неправильно говорить, что подход wpa_supplicant ошибочен. Тебе нравятся вещи, которые «просто работают», отлично. Ваше предпочтение - ваше право, но невежливо рассказать людям, что они не правы, только потому, что их предпочтение не ваше. Вот почему я опустил ваш ответ. - Stephen Boston


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


2
2017-09-18 03:42





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

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


1
2017-12-03 06:46