¿Cómo me conecto a una red wifi WPA usando la línea de comando?

Respuestas:

113

iw (list / config) solo puede manejar WEP.

Necesita el wpasupplicantpaquete que proporciona el wpa_supplicantcomando, instalar si es necesario a través de sudo apt-get install wpasupplicant.

Pones tu SSID y contraseña /etc/wpa_supplicant.conf(requiere sudo).

Ejemplo:

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

Asumiendo que su interfaz es wlan0, puede conectarse con:

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

"wext" es un controlador y será específico para cada tarjeta; consulte wpa_supplicant -h. Ejemplos:

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
fuente
bueno, eso es bueno que iwlist / iwconfig pueda manejar solo WEP pero en mi caso wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 no se conectó a la red inalámbrica, aunque por defecto NetworkManager me conecta a la red Quiero probar la línea de comando ¿Hay algún error que estoy cometiendo?
Usuario registrado
El último comando es en realidad dos comandos, y debe ejecutar ambos como root(administrador del sistema). Entonces, sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 o divídalos en dos comandos alrededor &&.
Anders
Esta solución me da el error "wlan0: controlador no admitido 'ext'".
Cerin
1
@Rinzwind, Sí ... Mirar a través de la página de manual de wpa_supplicant muestra que el controlador puede variar, por lo que su comando probablemente no funcionará como se da literalmente. Debe elegir el -D <controlador> para su hardware específico. Para mí, terminó siendo "nl80211".
Cerin
1
¡Omití completamente la opción -D y funciona! ¡Gracias! :)
Ray
72

Este enlace lo muestra todo y funcionó bien para mí: http://linux.icydog.net/wpa.php

Estoy copiando el contenido aquí, así que lo tenemos, en caso de que el sitio se desconecte.

Línea de comando WPA

A veces estará en una línea de comando sin acceso a las herramientas de red GUI, pero su punto de acceso está protegido con WPA. ¿Qué haces?

Suponiendo que su tarjeta inalámbrica realmente funciona (es decir, iwconfig puede verla e interactuar con ella), usar wpa_supplicant es bastante simple. Instalar wpa_supplicant

La mayoría de las distribuciones actuales tienen wpa_supplicant instalado por defecto. Si tiene los comandos wpa_passphrase y wpa_supplicant disponibles, está listo para comenzar. De lo contrario, deberá instalar el paquete haciendo algo como (para Ubuntu):

$ sudo apt-get install wpasupplicant

O (para Fedora):

# yum install wpa_supplicant

O cualquiera que sea el comando para su distribución.

Generando el archivo de configuración

Ahora que wpa_supplicant está instalado, crearemos su archivo de configuración. Una vez que conozca la frase de contraseña SSID y WPA, todo lo que tiene que hacer es ejecutar:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

Por supuesto, reemplace "myrouter" con el SSID de su enrutador, "mypassphrase" con su frase de contraseña WPA y "wpa.conf" con cualquier archivo en el que desee almacenar la configuración. Este nombre de archivo no tiene que seguir un formato particular o tener una extensión particular

Alternativamente, para evitar escribir la frase de contraseña en la línea de comando (para que no se guarde en el historial del shell), puede especificar solo el SSID en la línea de comando. wpa_passphrase esperará a que escriba la frase de contraseña seguida de enter:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Deberías terminar con un archivo como este:

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

Conectándose

Ahora realmente ejecutaremos wpa_supplicant para conectarnos a la red inalámbrica. Primero, si su enrutador transmite su SSID (todos lo hacen de manera predeterminada), es probable que desee asegurarse de que su tarjeta inalámbrica realmente pueda verlo:

$ iwlist scan

Puede que tenga que ejecutar eso como root para forzar una actualización.

A continuación, deberá conocer tres datos:

  1. Qué controladores inalámbricos wpa_supplicant usar para su tarjeta. Running wpa_supplicant --helpmuestra los diferentes controladores que tiene (en "controladores:"). A partir de 0.5.8, las opciones útiles son: wext, hostap, madwifi, atmel, ndiswrapper, y ipw(IPW es sólo para los núcleos de edad;> = 2.6.13 debe utilizar wext). Si no ve una coincidencia específica para su tarjeta, intente con wext, ya que ese es el tipo general.
  2. El dispositivo de red de su tarjeta. Esto suele ser eth1 o wlan0, pero si no está seguro, simplemente puede ejecutar iwconfig. Informará "sin extensiones inalámbricas" para dispositivos no inalámbricos y mostrará algunos datos para cualquier dispositivo inalámbrico.
  3. La ruta al archivo de configuración que creó en el paso anterior.

Ahora que tiene estos datos, ejecute (como root):

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

No hay espacios entre las opciones y los parámetros. No incluya los corchetes, ya que acabo de agregarlos para mayor claridad. Por ejemplo, para mi computadora portátil se ve así:

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

También puede ejecutarlo en segundo plano utilizando la -Bopción para que no ocupe su consola.

Ahora estás asociado con la red.

Ponerse en línea

Para realmente conectarse, tendrá que obtener una IP de alguna manera. La mayoría de las personas solo querrán obtener una IP dinámica de un servidor DHCP, probablemente el que está integrado en el enrutador. (No voy a cubrir la configuración de una IP estática y una tabla de enrutamiento porque es una bestia en sí misma).

Para obtener un contrato de arrendamiento de DHCP, primero libere los contratos de arrendamiento que todavía tiene (como root):

# dhclient -r

Luego solicite un nuevo contrato de arrendamiento (por supuesto, reemplazando eth1 con el nombre de su dispositivo de red, el mismo que utilizó en la sección anterior):

# dhclient eth1

Ahora tiene una IP, al menos en teoría. ¡Feliz surf!

Alexandre Schmidt
fuente
1
Para su información para personas sin experiencia, la mayoría de los nombres de la interfaz de la tarjeta inalámbrica serán wlan <número>, por lo que, por ejemplo, la primera tarjeta inalámbrica en su configuración será wlan0 en lugar de eth1
xorinzor
Gracias, el comando wpa_passphrase ayudó. Intenté la respuesta aceptada pero el archivo estaba equivocado, wpa_passphrase me ayudó y luego pasé el segundo comando de la respuesta aceptada (ya sabía con certeza que se llama wlan0) ...
Lilian A. Moraru
gracias, eso fue realmente genial, ¿pueden darme un enlace sobre cómo configurar la tabla estática y de enrutamiento ... :)
Yassine
1
@AlexandreSchmidt +1 por ser integral!
John Strood
@ JohnStrood estrictamente deberías agradecer a quien escribió el sitio web ya que es una copia de allí
icc97
8

Debian y otras distribuciones tienen wpa_suplicant ejecutándose como un servicio por defecto para administrar las redes wifi. wpa_suplicant puede ser manejado por diferentes clientes / front-end como la GUI del administrador de red. Esto se explica mejor en esta wiki de Debian .

wpa_cli es el cliente de línea de comando wpa_suplicant para administrar las redes wifi.

Editar : Acabo de encontrar esta publicación que explica cómo usar nmcli y es mucho mejor que wpa_cli, ya que es compatible con el Administrador de red GUI y sus configuraciones y redes wifi guardadas.

Ejemplo de uso de wpa_cli :

Comprueba que ya tengo una interfaz de red con wifi habilitado:

# 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

Compruebe si el proceso wpa_suplicant se está ejecutando:

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

Ingrese en el modo interactivo del cliente wpa:

# wpa_cli

Lista de puntos de acceso disponibles:

> scan
> scan_results

... y obtienes algo como esto:

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

Agregue su AP:

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

Selecciónelo como actual:

> enable_network 0

Conéctate a él:

> reconnect

Comprueba el estado:

> status

Salga de wpa_cli:

> quit

Desde el shell, solicite DHCP para una configuración de IP y red:

# dhclient -r
# dhclient wlan0
David
fuente
¿Por qué hablas wpa_cliy luego escribes wpa_client? En Kubuntu 18.10 wpa_clientparece no existir como un comando
rtrtrt
Tienes razón ... arreglado.
David
3

Primero suba su tarjeta si no está funcionando:

ifconfig wlan0 up

Establezca los parámetros según su red

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
LnxSlck
fuente
15
Creo que esto es solo para WEP. No WPA;)
Rinzwind
Rinzwind tiene razón. Esto es para WEP. Perdón por el error.
LnxSlck
2
No hay problema. Déjalo aquí y alguien algún día se beneficiará de tu respuesta;)
Rinzwind
¿funcionará esto incluso sin una clave como una red abierta?
EvoandroidEvo
1
Espero que nadie se beneficie de una respuesta específica de WEP: '(
Max Ried
2

En realidad, hay una manera de hacerlo usando NetworkManager, si tiene el checkboxpaquete instalado.

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

(Crédito: error 923836 , que apareció en mis búsquedas sobre el tema).

zigg
fuente
2

Todas las respuestas que sugieren wpa_supplicant son incorrectas. Sí, puede conectarlo a la red WPA, pero a la larga es una mala solución porque será muy difícil de mantener y no funcionará bien con una conexión por cable. Lea esta respuesta y haga su vida más fácil utilizando Network Manager desde la línea de comandos. Perdí horas tratando de configurar wpa_supplicant, luego probé nmcli y "simplemente funcionó".

Cerin
fuente
2
El problema con las cosas que "simplemente funcionan" es que pueden fácilmente "simplemente no funcionar" y luego dónde estás. Para las personas CLI, el enfoque directo wpa_supplicant es mejor porque expone todas sus partes. La gran virtud de NM es que todas sus partes están ocultas. Por lo tanto, es incorrecto decir que el enfoque wpa_supplicant es incorrecto. Te gustan las cosas que 'simplemente funcionan', bien. Su preferencia es su derecho, pero es de mala educación decirle a la gente que están equivocados solo porque su preferencia no es suya. Es por eso que marqué tu respuesta.
Stephen Boston
2

Puede usar VSWM: Administrador inalámbrico muy simple. Coloca sus AP conocidos en un simple archivo cfg (/etc/vswm.cfg) y cuando lo ejecuta vswmescanea las redes disponibles y conecta su tarjeta con la primera que aparece en /etc/vswm.cfg.

VSWM está disponible en https://github.com/dmelo/vswm . Aquí hay una selección de cómo se ve el archivo de configuración 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

Bajo el capó, utiliza las herramientas de línea de comandos estándar: iwlist, wpa_supplicant, iwconfig, dhclient ... Solo automatiza el trabajo.

Diogo Melo
fuente
1

Tuve problemas para usar wpa_supplicantdirectamente para acceder a una red inalámbrica. Mi ID de red y contraseña generaron errores cuando utilicé el wpa_supplicant.confarchivo en la wpa_supplicantlínea de comando, por ejemplo

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

Pude solucionarlo con wpa_cli. La secuencia de comandos que tuve que usar, ya que estoy usando un controlador de Windows con Linux ndiswrapper, es:

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

Configuré la red agregándola en la sección inalámbrica de redes en la GUI, para poder hacer clic en el icono de red inalámbrica o cableada y seleccionar el proveedor inalámbrico (que a veces era necesario para completar el inicio de sesión).

John
fuente
1

Esta nmclies la versión de línea de comandos de la aplicación de administrador de red predeterminada en Ubuntu.

Algunas de las ventajas son que utiliza la configuración que ya tiene desde la interfaz gráfica y no necesita acceso de root.

Puede ejecutar nmclipara mostrar las opciones disponibles.

Ejemplo para conectarse a un wifi llamado MYESSID:

    nmcli c up MYESSID   
desgua
fuente
1
nmcli, nm-applet, y sí, su respuesta es la mejor, pero no sé por qué nadie la vota
Saeid
@Saeid ¡Gracias!
Desgua