Як підключитися до Wi-Fi мережі WPA за допомогою командного рядка?


113

В основному, я хотів би використовувати iwconfigдля підключення до своєї Wi-Fi мережі, коли я не перебуваю всередині X. Але я просто не бачу способу зробити це на сторінці man. Будь-яка ідея?


Відповіді:


113

iw (список / конфігурація) може працювати лише з 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.

добре, що добре, що iwlist / iwconfig може працювати лише з WEP, але в моєму випадку wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 не підключено до бездротової мережі, хоча за замовчуванням NetworkManager підключає мене до мережі, я хочу спробувати спосіб командного рядка, чи є якась помилка?
Зареєстрований користувач

Остання команда - це фактично дві команди, і вам потрібно запустити обидві як root(системний адміністратор). Отже sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 або розділіть їх на дві команди навколо &&.
Андерс

Це рішення дає мені помилку "wlan0: Непідтримуваний драйвер 'ext'".
Серін

1
@Rinzwind, так ... Якщо переглядати сторінку wpa_supplicant, видно, що драйвер може відрізнятися, тому ваша команда, ймовірно, не працюватиме як буквально задана. Ви повинні вибрати -D <driver> для конкретного обладнання. Для мене це було "nl80211".
Серін

1
Я просто повністю пропускаю варіант -D, і він працює! Дякую! :)
Рей

72

Це посилання показує все це і справно працює для мене: 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містить список різних драйверів, які він має (під "драйверами:"). Станом на 0.5.8, корисні варіанти: wext, hostap, madwifi, atmel, ndiswrapper, і 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, принаймні, теоретично. Щасливого серфінгу!


1
FYI для недосвідчених людей більшість імен інтерфейсу бездротової картки будуть wlan <кількість>, тому, наприклад, перша бездротова карта у вашій конфігурації буде wlan0 замість eth1
xorinzor

Дякую, команда wpa_passphrase допомогла. Я спробував прийняту відповідь, але файл помилявся, wpa_passphrase допоміг у цьому, і тоді я просто передав другу команду з прийнятої відповіді (я вже точно знав, що вона називається wlan0) ...
Ліліан А. Морару

спасибі, це було дійсно чудово, можете мені дати посилання на те, як налаштувати статичну таблицю та маршрутизацію ... :)
Yassine

1
@AlexandreSchmidt +1 за вичерпність!
Джон Строд

@JohnStrood суворо слід дякувати тому, хто написав веб-сайт, оскільки це копія звідти
icc97

8

У Debian та інших дистрибутивах за замовчуванням працює сервер wpa_suplicant для управління мережами Wi-Fi. wpa_suplicant може оброблятися різними клієнтами / передніми сторонами, такими як GUI мережевого менеджера. Це краще пояснено в цій вікі для debian .

wpa_cli - це командний рядок клієнта wpa_suplicant для управління мережами Wi-Fi.

Редагувати : Я щойно знайшов цю публікацію, в якій пояснюється, як користуватися nmcli, і це набагато краще, ніж wpa_cli, оскільки він сумісний з Менеджером GUI Network і їх налаштуваннями та збереженими мережами 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_cliа потім пишеш wpa_client? На Kubuntu 18.10, wpa_clientздається, не існує команди
rtrtrt

Ви праві ... виправлені.
Девід

3

Спочатку підкажіть свою карту, якщо вона не запущена:

ifconfig wlan0 up

Встановіть параметри відповідно до вашої мережі

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

15
Я вважаю, що це стосується лише WEP. Ні WPA;)
Rinzwind

Рінсвінд має рацію. Це для WEP. Вибачте за помилку.
LnxSlck

2
нема проблем. Залиште це тут, і хтось колись скористається вашою відповіддю;)
Rinzwind

це буде працювати навіть без ключа, як відкрита мережа?
EvoandroidEvo

1
Я сподіваюся, що ніхто ніколи не отримає користі від конкретної відповіді WEP: '(
Макс Рійд,

2

Насправді це можливо зробити за допомогою NetworkManager, якщо у вас встановлений checkboxпакет.

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

(Кредит: помилка 923836 , яка з’явилася під час моїх пошуків по темі.)


2

Усі відповіді, що підказують, що wpa_supplicant помилкові. Так, це може підключити вас до мережі WPA, але це погане рішення в довгостроковій перспективі, оскільки це буде дуже важко підтримувати і не буде грати добре з дротовим з'єднанням. Прочитайте цю відповідь і полегшіть своє життя, використовуючи Менеджер мережі з командного рядка. Я витрачав години, намагаючись налаштувати wpa_supplicant, потім спробував nmcli, і він "просто працював".


2
Проблема з речами, які "працюють тільки", полягає в тому, що вони легко "просто не працюють", а де ти там. Для людей з CLI прямий підхід wpa_supplicant є кращим, оскільки він розкриває всі його частини. Велика чеснота НМ полягає в тому, що всі її частини заховані подалі. Тож неправильно сказати, що підхід wpa_supplicant неправильний. Вам подобаються речі, які "просто працюють", добре. Ваш уподобання - це ваше право, але нечесно говорити людям, що вони помиляються лише тому, що їх перевага не за вами. Ось чому я натиснув вашу відповідь.
Стівен Бостон

2

Ви можете використовувати VSWM - дуже простий бездротовий менеджер. Ви розміщуєте відомі AP-файли у простому файлі 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 ... Тільки він автоматизує завдання.


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

Мені було налаштовано мережу, додавши її в розділ бездротової мережі в графічному інтерфейсі, щоб я міг натиснути піктограму дротової або бездротової мережі та вибрати провайдера бездротового зв'язку (що іноді було необхідним для завершення входу).


1

Версія nmcliкомандного рядка програми менеджера мережі за замовчуванням на Ubuntu.

Однією з переваг є те, що він використовує конфігурацію, яку ви вже маєте з графічного інтерфейсу, і не потребує кореневого доступу.

Ви можете бігти, nmcliщоб показати доступні варіанти.

Приклад підключення до wifi з назвою MYESSID:

    nmcli c up MYESSID   

1
nmcli, nm-applet, і так, ваша відповідь найкраща, але я не знаю, чому ніхто не проголосує за це
Saeid

@Saeid Дякую!
десгуа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.