Come mi collego a una rete WPA wifi usando la riga di comando?


Risposte:


113

iw (list / config) può gestire solo WEP.

È necessario il wpasupplicantpacchetto che fornisce il wpa_supplicantcomando, installare se necessario tramite sudo apt-get install wpasupplicant.

Inserisci SSID e password /etc/wpa_supplicant.conf(richiede sudo).

Esempio:

network={
    ssid="ssid_name"
    psk="password"
}

Supponendo che la tua interfaccia sia wlan0, puoi connetterti con:

sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D wext
sudo dhclient wlan0

"wext" è un driver e sarà specifico per ogni carta; fare riferimento a wpa_supplicant -h. Esempi:

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.

bene è bello che iwlist / iwconfig sia in grado di gestire solo WEP ma nel mio caso wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 non si è connesso alla rete wireless, anche se per impostazione predefinita NetworkManager mi collega alla rete voglio provare in modo da riga di comando c'è qualche errore che sto facendo?
Utente registrato

L'ultimo comando è in realtà due comandi ed è necessario eseguirli entrambi come root(amministratore di sistema). Quindi sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 o dividerli in due comandi in giro &&.
Anders,

Questa soluzione mi dà l'errore "wlan0: driver non supportato 'ext'".
Cerin,

1
@Rinzwind, Sì ... Guardando attraverso la manpage di wpa_supplicant si vede che il driver può variare, quindi il tuo comando probabilmente non funzionerà come indicato alla lettera. Devi scegliere -D <driver> per il tuo hardware specifico. Per me, ha finito per essere "nl80211".
Cerin,

1
Ho appena omesso completamente l'opzione -D e funziona! Grazie! :)
Ray,

72

Questo link mostra tutto e ha funzionato bene per me: http://linux.icydog.net/wpa.php

Sto copiando i contenuti qui, quindi li abbiamo, nel caso in cui quel sito non sia in linea.

Riga di comando WPA

A volte ti troverai a una riga di comando senza accesso agli strumenti di rete della GUI, ma il tuo punto di accesso è protetto con WPA. cosa fai?

Supponendo che la tua scheda wireless funzioni davvero (ovvero che iwconfig può vederla e interagire con essa), l'utilizzo di wpa_supplicant è in realtà piuttosto semplice. Installazione di wpa_supplicant

La maggior parte delle distribuzioni al giorno d'oggi ha wpa_supplicant installato per impostazione predefinita. Se hai i comandi wpa_passphrase e wpa_supplicant disponibili, allora sei a posto. Altrimenti, dovrai installare il pacchetto facendo qualcosa di simile (per Ubuntu):

$ sudo apt-get install wpasupplicant

Oppure (per Fedora):

# yum install wpa_supplicant

O qualunque sia il comando per la tua distribuzione.

Generazione del file di configurazione

Ora che wpa_supplicant è installato, creeremo il suo file di configurazione. Una volta che conosci la passphrase SSID e WPA, tutto ciò che devi fare è eseguire:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

Naturalmente, sostituisci "myrouter" con l'SSID del tuo router, "mypassphrase" con la tua passphrase WPA e "wpa.conf" con qualsiasi file in cui desideri memorizzare la configurazione. Questo nome file non deve seguire un formato particolare o avere un'estensione particolare.

In alternativa, per evitare di digitare la passphrase sulla riga di comando (in modo che non venga salvata nella cronologia della shell), è possibile specificare solo l'SSID sulla riga di comando. wpa_passphrase attenderà che tu digiti la passphrase seguita da enter:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Dovresti finire con un file simile al seguente:

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

Connettersi

Ora eseguiremo effettivamente wpa_supplicant per connetterci alla rete wireless. Innanzitutto, se il tuo router trasmette il suo SSID (lo fanno tutti per impostazione predefinita), probabilmente vorrai assicurarti che la tua scheda wireless possa effettivamente vederlo:

$ iwlist scan

Potrebbe essere necessario eseguirlo come root per forzare un aggiornamento.

Successivamente, dovrai conoscere tre informazioni:

  1. Quali driver wireless wpa_supplicant utilizzare per la tua carta. In esecuzione wpa_supplicant --helpelenca i diversi driver che ha (in "driver:"). A partire dal 0.5.8, le scelte utili sono: wext, hostap, madwifi, atmel, ndiswrapper, e ipw(ipw è solo per i vecchi kernel;> = 2.6.13 dovrebbe usare wext). Se non vedi una corrispondenza specifica per la tua carta, prova wext, in quanto è una specie di catch-all.
  2. Il dispositivo di rete della tua carta. Di solito è eth1 o wlan0, ma se non sei sicuro puoi semplicemente correre iwconfig. Riferirà "nessuna estensione wireless" per i dispositivi non wireless e mostrerà alcuni dati per tutti i dispositivi wireless.
  3. Il percorso del file di configurazione creato nel passaggio precedente.

Ora che hai questi dati, esegui (come root):

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

Non ci sono spazi tra le opzioni e i parametri. Non includere le parentesi quadre come ho appena aggiunto quelle per chiarezza. Ad esempio, per il mio laptop sembra così:

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

Puoi anche eseguirlo in background utilizzando l' -Bopzione in modo che non occupi la tua console.

Ora sei associato alla rete.

Andare online

Per essere effettivamente online, dovrai ottenere un IP in qualche modo. Molte persone vorranno semplicemente ottenere un IP dinamico da un server DHCP, probabilmente quello integrato nel router. (Non ho intenzione di coprire l'impostazione di un IP statico e la tabella di routing perché è una bestia in sé.)

Per ottenere un lease DHCP, rilascia prima tutti i lease a cui stai ancora trattenendo (come root):

# dhclient -r

Quindi chiedi un nuovo contratto di locazione (ovviamente sostituendo eth1 con il nome del tuo dispositivo di rete, lo stesso che hai usato nella sezione precedente):

# dhclient eth1

Ora hai un IP, almeno in teoria. Buona navigazione!


1
Cordiali saluti per persone inesperte, la maggior parte dei nomi dell'interfaccia della scheda wireless sarà wlan <numero>, quindi ad esempio la prima scheda wireless nella tua configurazione sarà wlan0 invece di eth1
xorinzor

Grazie, il comando wpa_passphrase ha aiutato. Ho provato la risposta accettata ma il file era sbagliato, wpa_passphrase mi ha aiutato e poi ho appena passato il secondo comando dalla risposta accettata (sapevo già con certezza che si chiama wlan0) ...
Lilian A. Moraru

grazie è stato davvero grandioso, puoi darmi la copertina del link su come impostare la tabella statica e di routing ... :)
Yassine,

1
@AlexandreSchmidt +1 per essere completo!
John Strood,

@JohnStrood dovresti assolutamente ringraziare chiunque abbia scritto il sito web dal momento che è una copia da lì
icc97

8

Debian e altre distro hanno wpa_suplicant in esecuzione come servizio di default per gestire le reti wifi. wpa_suplicant può essere gestito da diversi client / front-end come la GUI del gestore di rete. Questo è meglio spiegato in questa wiki debian .

wpa_cli è il client wpa_suplicant della riga di comando per gestire le reti wifi.

Modifica : ho appena trovato questo post che spiega come usare nmcli ed è molto meglio di wpa_cli poiché è compatibile con il Network Manager della GUI, le loro impostazioni e le reti wifi salvate.

Esempio di utilizzo di wpa_cli :

Verifica che abbia già un'interfaccia di rete abilitata per il wifi:

# 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

Controlla se il processo wpa_suplicant è in esecuzione:

# ps -e | grep wpa
1881 ?        00:00:07 wpa_supplicant

Entra in modalità interattiva client wpa:

# wpa_cli

Elenca i punti di accesso disponibili:

> scan
> scan_results

... e ottieni qualcosa del genere:

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

Aggiungi il tuo AP:

> add_network
> set_network 0 ssid "vodafone817E"
> set_network 0 psk "my-pass-phrase"

Selezionalo come corrente:

> enable_network 0

Connettiti ad esso:

> reconnect

Controlla lo stato:

> status

Esci da wpa_cli:

> quit

Dalla shell, richiedere DHCP per un IP e le impostazioni di rete:

# dhclient -r
# dhclient wlan0

Perché ne parli wpa_clie poi scrivi wpa_client? Su Kubuntu 18.10 wpa_clientsembra non esistere come comando
rtrtrt

Hai ragione ... risolto.
David,

3

Per prima cosa aggiungi la tua carta se non è in esecuzione:

ifconfig wlan0 up

Imposta i parametri secondo la tua rete

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

15
Credo che questo sia solo per WEP. No WPA;)
Rinzwind

Rinzwind ha ragione. Questo è per WEP. Ci scusiamo per l'errore.
LnxSlck,

2
nessun problema. Lascialo qui e qualcuno un giorno trarrà beneficio dalla tua risposta;)
Rinzwind

funzionerà anche senza una chiave come una rete aperta?
EvoandroidEvo,

1
Spero che nessuno tragga mai beneficio da una risposta specifica del WEP: '(
Max Ried,

2

In realtà c'è un modo per farlo usando NetworkManager, se il checkboxpacchetto è installato.

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

(Credito: bug 923836 , che è emerso nelle mie ricerche sull'argomento.)


2

Tutte le risposte che suggeriscono che wpa_supplicant sono sbagliate. Sì, potrebbe collegarti alla rete WPA, ma questa è una cattiva soluzione a lungo termine perché sarà molto difficile da mantenere e non giocherà bene con una connessione cablata. Leggi questa risposta e semplifica la vita utilizzando Network Manager dalla riga di comando. Ho perso ore a cercare di configurare wpa_supplicant, quindi ho provato nmcli e "ha funzionato".


2
Il problema con le cose che "funzionano" è che possono facilmente "semplicemente non funzionare" e quindi dove sei. Per le persone della CLI, l'approccio diretto wpa_supplicant è migliore perché espone tutte le sue parti. La grande virtù di NM è che tutte le sue parti sono nascoste. Quindi è sbagliato dire che l'approccio wpa_supplicant è sbagliato. Ti piacciono le cose che "funzionano", bene. La tua preferenza è la tua, ma è scortese dire alle persone che hanno torto solo perché la loro preferenza non è tua. Questo è il motivo per cui ho barrato la tua risposta.
Stephen Boston,

2

È possibile utilizzare VSWM - Very Simple Wireless Manager. Metti i tuoi AP conosciuti su un semplice file cfg (/etc/vswm.cfg) e quando lo esegui vswmscansiona le reti disponibili e connetti la tua scheda con la prima che appare su /etc/vswm.cfg.

VSWM è disponibile su https://github.com/dmelo/vswm . Ecco una scelta di come appare il file di configurazione 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

Sotto i cofani, utilizza gli strumenti standard della riga di comando: iwlist, wpa_supplicant, iwconfig, dhclient ... Solo automatizza il lavoro.


1

Ho avuto problemi a utilizzare wpa_supplicantdirettamente per accedere a una rete wireless. Il mio ID di rete e la password hanno generato errori quando ho usato il wpa_supplicant.conffile dalla wpa_supplicantriga di comando, ad es

sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B

Sono stato in grado di aggirare il problema con wpa_cli. La sequenza di comandi che ho dovuto usare, poiché sto usando un driver Windows con Linux ndiswrapper, è:

sudo modprobe ndiswrapper
sudo iwconfig wlan0 essid "<My Network ID>" mode managed
sudo wpa_cli identity "<My Network ID>" password "<My password>"

Ho configurato la rete aggiungendola nella sezione wireless della rete nella GUI, in modo da poter fare clic sull'icona della rete cablata o wireless e selezionare il provider wireless (che a volte era necessario per completare l'accesso).


1

La nmcliè la versione a riga di comando del gestore di rete predefinita applicazione su Ubuntu.

Alcuni dei vantaggi sono che utilizza la configurazione che hai già dall'interfaccia grafica e non ha bisogno dell'accesso root.

È possibile eseguire nmcliper mostrare le opzioni disponibili.

Esempio per connettersi a un wifi chiamato MYESSID:

    nmcli c up MYESSID   

1
nmcli, nm-applet, e sì la tua risposta è la migliore, ma non so perché nessuno lo voti
Saeid

@Saeid Grazie!
desgua,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.