Comment se connecter à un réseau wifi WPA à l'aide de la ligne de commande?

Réponses:

113

iw (list / config) ne peut gérer que WEP.

Vous avez besoin du wpasupplicantpaquet qui fournit la wpa_supplicantcommande, installez si nécessaire via sudo apt-get install wpasupplicant.

Vous mettez votre SSID et votre mot de passe dans /etc/wpa_supplicant.conf(requiert sudo).

Exemple:

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

En supposant que votre interface soit wlan0, vous pouvez vous connecter avec:

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

"wext" est un pilote spécifique à chaque carte; se référer à wpa_supplicant -h. Exemples:

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
la source
C'est bien que iwlist / iwconfig ne puisse gérer que le WEP mais, dans mon cas, il wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 n'est pas connecté au réseau sans fil. Cependant, par défaut, NetworkManager me connecte au réseau. Je souhaite essayer la ligne de commande. Y a-t-il une erreur que je fais?
Utilisateur enregistré
La dernière commande est en fait deux commandes et vous devez les exécuter en tant rootqu’administrateur système. Donc, sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 ou divisez-les en deux commandes &&.
Anders
Cette solution me donne l'erreur "wlan0: Pilote non supporté 'ext'".
Cerin
1
@Rinzwind, Yes ... L'examen de la page de manuel de wpa_supplicant montre que le pilote peut varier, de sorte que votre commande ne fonctionnera probablement pas de la manière indiquée. Vous devez choisir le -D <pilote> pour votre matériel spécifique. Pour moi, cela a fini par être "nl80211".
Cerin
1
Je viens d'omettre complètement l'option -D et ça marche! Merci! :)
Ray
72

Ce lien montre tout et a bien fonctionné pour moi: http://linux.icydog.net/wpa.php

Je copie le contenu ici, donc nous l'avons, au cas où ce site serait déconnecté.

Ligne de commande WPA

Parfois, vous êtes sur une ligne de commande sans accès aux outils de réseau de l'interface graphique, mais votre point d'accès est sécurisé avec WPA. Que faire?

En supposant que votre carte sans fil fonctionne réellement (c.-à-d. Que iwconfig peut la voir et interagir avec elle), utiliser wpa_supplicant est en fait assez simple. Installation de wpa_supplicant

Wpa_supplicant est installé par défaut dans la plupart des distributions. Si vous avez les commandes wpa_passphrase et wpa_supplicant disponibles, vous pouvez continuer. Sinon, vous devrez installer le paquet en effectuant quelque chose comme (pour Ubuntu):

$ sudo apt-get install wpasupplicant

Ou (pour Fedora):

# yum install wpa_supplicant

Ou quelle que soit la commande pour votre distribution.

Générer le fichier de configuration

Maintenant que wpa_supplicant est installé, nous allons créer son fichier de configuration. Une fois que vous connaissez le mot de passe SSID et WPA, tout ce que vous avez à faire est d’exécuter:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

Bien sûr, remplacez "myrouter" par le SSID de votre routeur, "mypassphrase" par votre phrase secrète WPA et "wpa.conf" par le fichier dans lequel vous souhaitez stocker la configuration. Ce nom de fichier ne doit pas nécessairement suivre un format particulier. avoir une extension particulière.

Sinon, pour éviter de taper la phrase secrète sur la ligne de commande (afin qu'elle ne soit pas enregistrée dans l'historique du shell), vous pouvez spécifier uniquement le SSID sur la ligne de commande. wpa_passphrase attend que vous tapiez le mot de passe suivi de:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Vous devriez vous retrouver avec un fichier ressemblant à ceci:

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

Se connecter

Nous allons maintenant lancer wpa_supplicant pour nous connecter au réseau sans fil. Premièrement, si votre routeur diffuse son SSID (tous le font par défaut), vous voulez probablement vous assurer que votre carte sans fil peut réellement le voir:

$ iwlist scan

Vous devrez peut-être l'exécuter en tant que root pour forcer une actualisation.

Ensuite, vous aurez besoin de connaître trois informations:

  1. Quels pilotes sans fil wpa_supplicant utiliser pour votre carte. Running wpa_supplicant --helpliste les différents pilotes dont il dispose (sous "pilotes:"). A partir de 0.5.8, les choix utiles sont: wext, hostap, madwifi, atmel, ndiswrapperet ipw(IPW est pour les vieux noyaux seulement;> = 2.6.13 doit utiliser wext). Si vous ne voyez pas de correspondance spécifique pour votre carte, essayez wext, car c'est un peu la panique.
  2. Le périphérique réseau de votre carte. C'est généralement eth1 ou wlan0, mais si vous n'êtes pas sûr, vous pouvez simplement courir iwconfig. Il signalera "pas d'extensions sans fil" pour les périphériques non sans fil et affichera des données pour tous les périphériques sans fil.
  3. Le chemin d'accès au fichier de configuration que vous avez créé à l'étape précédente.

Maintenant que vous avez ces données, lancez (en tant que root):

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

Il n'y a pas d'espaces entre les options et les paramètres. N'incluez pas les crochets car je viens d'ajouter ceux pour plus de clarté. Par exemple, pour mon ordinateur portable, cela ressemble à ceci:

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

Vous pouvez également l'exécuter en arrière-plan en utilisant l' -Boption pour qu'il ne prenne pas votre console.

Maintenant, vous êtes associé au réseau.

Se mettre en ligne

Pour être réellement en ligne, vous devrez vous procurer une adresse IP. La plupart des gens voudront simplement obtenir une adresse IP dynamique d'un serveur DHCP, probablement celle intégrée au routeur. (Je ne vais pas couvrir la définition d'une adresse IP statique et d'une table de routage car c'est une bête en soi.)

Pour obtenir un bail DHCP, commencez par libérer les baux sur lesquels vous avez encore un contrat (en tant que root):

# dhclient -r

Puis demandez un nouveau bail (bien sûr, remplacez eth1 par le nom de votre périphérique réseau, le même que celui utilisé dans la section précédente):

# dhclient eth1

Vous avez maintenant un IP, au moins en théorie. Bonne navigation!

Alexandre Schmidt
la source
1
Pour votre information, la plupart des noms d’interface de carte sans fil seront wlan <numéro>. Ainsi, par exemple, la première carte sans fil de votre configuration sera wlan0 au lieu de eth1
xorinzor
Merci, la commande wpa_passphrase a aidé. J'ai essayé la réponse acceptée, mais le fichier était faux, wpa_passphrase m'a aidé, puis je viens de passer la deuxième commande de la réponse acceptée (je savais déjà qu'elle s'appelle wlan0) ...
Lilian A. Moraru,
merci c'est vraiment génial, pouvez-vous me donner la couverture de lien comment installer statique et table de routage ... :)
Yassine
1
@AlexandreSchmidt +1 pour sa compréhension!
John Strood
@JohnStrood strictement vous devriez remercier celui qui a écrit le site car c'est une copie de là
icc97
8

Dans Debian et d’autres distributions, wpa_suplicant est exécuté en tant que service par défaut afin de gérer les réseaux wifi. wpa_suplicant peut être géré par différents clients / front-end tels que l'interface graphique du gestionnaire de réseau. Ceci est mieux expliqué dans ce wiki debian .

wpa_cli est le client en ligne de commande wpa_suplicant pour gérer les réseaux wifi.

Edit : Je viens de trouver ce message expliquant comment utiliser nmcli et il est bien meilleur que wpa_cli car il est compatible avec le gestionnaire de réseau graphique et ses paramètres ainsi que les réseaux wifi enregistrés.

Exemple d'utilisation de wpa_cli :

Vérifiez que j'ai déjà une interface réseau compatible 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

Vérifiez si le processus wpa_suplicant est en cours d'exécution:

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

Entrez en mode interactif client wpa:

# wpa_cli

Liste des points d'accès disponibles:

> scan
> scan_results

... et vous obtenez quelque chose comme ça:

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

Ajoutez votre AP:

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

Sélectionnez-le comme courant:

> enable_network 0

Connectez-vous à elle:

> reconnect

Vérifiez le statut:

> status

Quittez wpa_cli:

> quit

À partir du shell, demandez à DHCP une adresse IP et des paramètres réseau:

# dhclient -r
# dhclient wlan0
David
la source
Pourquoi parlez-vous wpa_cliet ensuite vous écrivez wpa_client? Sur Kubuntu, le 18.10 ne wpa_clientsemble pas exister en tant que commande
rtrtrt
Vous avez raison ... fixe.
David
3

Commencez par lever votre carte si elle n'est pas fugitive:

ifconfig wlan0 up

Définissez les paramètres en fonction de votre réseau

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
LnxSlck
la source
15
Je crois que ceci est pour WEP seulement. Pas de WPA;)
Rinzwind
Rinzwind a raison. Ceci est pour WEP. Désolé pour l'erreur.
LnxSlck
2
aucun problème. Laissez-le ici et quelqu'un profitera un jour de votre réponse;)
Rinzwind
cela fonctionnera-t-il même sans clé comme un réseau ouvert?
EvoandroidEvo
1
J'espère que personne ne bénéficiera jamais d'une réponse spécifique du WEP: '(
Max Ried
2

Il existe en fait un moyen de le faire en utilisant NetworkManager, si le checkboxpaquet est installé.

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

(Crédit: bug 923836 , qui est apparu dans mes recherches sur le sujet.)

zigg
la source
2

Toutes les réponses suggérant wpa_supplicant sont fausses. Oui, cela peut vous connecter au réseau WPA, mais c'est une mauvaise solution à long terme car il sera très difficile à maintenir et ne jouera pas bien avec une connexion filaire. Lisez cette réponse et simplifiez-vous la vie en utilisant Network Manager à partir de la ligne de commande. J'ai perdu des heures à essayer de configurer wpa_supplicant, puis à essayer nmcli et cela "a juste fonctionné".

Cerin
la source
2
Le problème avec le «travail juste» est qu’ils peuvent facilement «ne pas travailler» et où vous êtes. Pour les utilisateurs de l'interface de ligne de commande, l'approche directe wpa_supplicant est préférable car elle expose toutes ses parties. La grande vertu de NM est que toutes ses parties sont cachées. Il est donc faux de dire que l'approche wpa_supplicant est fausse. Vous aimez les choses qui "fonctionnent", bien. Votre préférence est votre droit, mais il est impoli de dire aux gens qu'ils ont tort juste parce que leur préférence ne vous appartient pas. C'est pourquoi j'ai coché ta réponse.
Stephen Boston
2

Vous pouvez utiliser VSWM - Very Simple Wireless Manager. Vous placez vos points d'accès connus sur un simple fichier cfg (/etc/vswm.cfg). Lorsque vous l'exécutez, analysez vswmles réseaux disponibles et connectez votre carte au premier qui apparaît sur /etc/vswm.cfg.

VSWM est disponible à l' adresse https://github.com/dmelo/vswm . Voici un aperçu de la façon dont le fichier de configuration vswm.cfg se présente:

[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

Sous le capot, il utilise les outils de ligne de commande standard: iwlist, wpa_supplicant, iwconfig, dhclient ... Seulement, il automatise le travail.

Diogo Melo
la source
1

J'ai eu du mal à utiliser wpa_supplicantdirectement pour accéder à un réseau sans fil. Mon identifiant réseau et mon mot de passe ont généré des erreurs lorsque j'ai utilisé le wpa_supplicant.conffichier en wpa_supplicantligne de commande, par exemple

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

J'ai pu contourner le problème wpa_cli. La séquence de commande que j'ai dû utiliser, puisque j'utilise un pilote Windows avec Linux ndiswrapper, est la suivante:

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

J'avais configuré le réseau en l'ajoutant dans la section réseau de l'interface graphique pour pouvoir cliquer sur l'icône du réseau câblé ou sans fil et sélectionner le fournisseur de services sans fil (ce qui était parfois nécessaire pour terminer la connexion).

John
la source
1

Le nmcliest la version en ligne de commande de l'application de gestion de réseau par défaut sur Ubuntu.

Certains des avantages sont qu’il utilise la configuration que vous avez déjà à partir de l’interface graphique et qu’il n’a pas besoin d’un accès root.

Vous pouvez exécuter nmclipour afficher les options disponibles.

Exemple de connexion à un réseau Wi-Fi nommé MYESSID:

    nmcli c up MYESSID   
desgua
la source
1
nmcli, nm-applet, et oui votre réponse est la meilleure mais je ne sais pas pourquoi personne ne la vote
Saeid
@Saeid Merci!
desgua