Questão Como eu me conecto a uma rede Wi-Fi WPA usando a linha de comando?


Então, basicamente, eu gostaria de usar iwconfig para se conectar à minha rede wifi quando não estou dentro do X. Mas eu simplesmente não vejo uma maneira de fazer isso na página man. Qualquer ideia?


99
2018-05-17 15:48


origem


Relacionado: Ferramenta de linha de comando para facilitar a mudança da rede sem fio “conectado a”? na softwarerecs SE - kenorb


Respostas:


iw (list / config) só pode manipular WEP.

Você precisa do wpasupplicant pacote que fornece o wpa_supplicant comando, instale, se necessário, através sudo apt-get install wpasupplicant.

Você coloca seu SSID e senha em /etc/wpa_supplicant.conf.

Exemplo:

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

Supondo que sua interface seja wlan0, você pode se conectar com:

sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext
sudo dhclient wlan0

"wext" é um driver e isso será específico para cada cartão; referir-se wpa_supplicant -h. Exemplos:

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



Bem, isso é legal que iwlist / iwconfig pode manipular apenas WEP, mas no meu caso wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0  não conectado à rede sem fio, embora por padrão NetworkManager me conecta à rede Eu quero tentar o caminho da linha de comando há algum erro que estou fazendo? - Registered User
O último comando é na verdade dois comandos, e você precisa executar ambos root (administrador do sistema). assim sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0  ou dividi-los em dois comandos ao redor &&. - Anders
Esta solução me dá o erro "wlan0: driver não suportado 'ext'". - Cerin
@cerin você percebe isso é para WPA e não WEP;) - Rinzwind
@Rinzwind, Yes ... Examinar a página do manual do wpa_supplicant mostra que o driver pode variar, então seu comando provavelmente não funcionará como literalmente dado. Você tem que escolher o -D <driver> para o seu hardware específico. Para mim, acabou sendo "nl80211". - Cerin


Este link mostra tudo e funcionou bem para mim: http://linux.icydog.net/wpa.php

Estou copiando o conteúdo aqui, então nós o temos, caso esse site fique offline.

Linha de comando WPA

Às vezes você estará em uma linha de comando sem acesso a ferramentas de rede GUI - mas seu ponto de acesso é protegido com WPA. O que você faz?

Supondo que a sua placa sem fio realmente funciona (ou seja, o iwconfig pode ver e interagir com ela), o uso do wpa_supplicant é realmente muito simples. Instalando o wpa_supplicant

Atualmente, a maioria das distribuições tem o wpa_supplicant instalado por padrão. Se você tem os comandos wpa_passphrase e wpa_supplicant disponíveis, então você está pronto para ir. Caso contrário, você precisará instalar o pacote fazendo algo como (para o Ubuntu):

$ sudo apt-get install wpasupplicant

Ou (para o Fedora):

# yum install wpa_supplicant

Ou seja qual for o comando para sua distro.

Gerando o arquivo de configuração

Agora que o wpa_supplicant está instalado, criaremos seu arquivo de configuração. Depois que você souber a frase secreta SSID e WPA, tudo o que você precisa fazer é executar:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

É claro, substitua "myrouter" pelo SSID do seu roteador, "mypassphrase" pela senha WPA e "wpa.conf" pelo arquivo em que você deseja armazenar a configuração. Esse nome de arquivo não precisa seguir um formato ou tem uma extensão particular.

Como alternativa, para evitar digitar a frase secreta na linha de comando (para que ela não seja salva no histórico do shell), você pode especificar apenas o SSID na linha de comando. wpa_passphrase esperará que você digite a frase secreta seguida por enter:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Você deve acabar com um arquivo parecido com isto:

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

Ficar conectado

Agora vamos executar o wpa_supplicant para conectar-se à rede sem fio. Primeiro, se o seu roteador transmite seu SSID (todos eles fazem por padrão), você provavelmente quer ter certeza de que sua placa wireless pode realmente vê-lo:

$ iwlist scan

Você pode ter que executar isso como root para forçar uma atualização.

Em seguida, você precisará conhecer três informações:

  1. Quais drivers sem fio do wpa_supplicant devem ser usados ​​para o seu cartão. Executando o wpa_supplicant --help lista os diferentes drivers que ele possui (em "drivers:"). A partir de 0.5.8, as opções úteis são: wext, hostap, madwifi, atmel, ndiswrapper e ipw (ipw é apenas para kernels antigos;> = 2.6.13 deve usar wext). Se você não encontrar uma correspondência específica para o seu cartão, tente wext, pois esse é o tipo de pega-tudo.
  2. O dispositivo de rede do seu cartão. Isso geralmente é eth1 ou wlan0, mas se você não tiver certeza, pode simplesmente executar o iwconfig. Ele informará "sem extensões sem fio" para dispositivos não sem fio e exibirá alguns dados para qualquer dispositivo sem fio.
  3. O caminho para o arquivo de configuração que você criou na etapa anterior.

Agora que você tem esses dados, execute (como root):

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

Não há espaços entre as opções e os parâmetros. Não inclua os colchetes, pois acabei de adicioná-los para maior clareza. Por exemplo, para meu laptop, é assim:

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

Você também pode executá-lo em segundo plano usando a opção -B para que ele não ocupe seu console.

Agora você está associado à rede.

Ficando online

Para realmente ficar online, você terá que obter um IP de alguma forma. A maioria das pessoas só vai querer obter um IP dinâmico de um servidor DHCP, provavelmente aquele construído no roteador. (Eu não vou cobrir a definição de um IP estático e tabela de roteamento, porque isso é uma fera em si.)

Para obter uma concessão de DHCP, primeiro libere todas as concessões em que você ainda está se mantendo (como root):

# dhclient -r

Em seguida, peça uma nova concessão (obviamente, substituindo a eth1 pelo nome do seu dispositivo de rede, o mesmo que você usou na seção anterior):

# dhclient eth1

Você agora tem um IP, pelo menos em teoria. Surf feliz!


68
2018-04-08 19:44



FYI para pessoas inexperientes, a maioria dos nomes de interface de placa sem fio será wlan <number>, assim, por exemplo, a primeira placa wireless em sua configuração será wlan0 em vez de eth1 - xorinzor
Obrigado, o comando wpa_passphrase ajudou. Eu tentei a resposta aceita, mas o arquivo estava errado, wpa_passphrase ajudou com isso e então eu passei o segundo comando da resposta aceita (eu já sabia com certeza que é chamado wlan0) ... - Lilian A. Moraru
obrigado que foi realmente ótimo, você pode me dar cobertura link como configuração estática e tabela de roteamento ... :) - Yassine
@AlexandreSchmidt +1 por ser abrangente! - John Strood


O Debian e outras distros têm o wpa_suplicant sendo executado como um serviço por padrão para gerenciar as redes wifi. O wpa_suplicant pode ser manipulado por diferentes clientes / front-ends, como a GUI do gerenciador de rede. Isto é melhor explicado neste wiki debian.

wpa_cli é o cliente da linha de comando wpa_suplicant para gerenciar as redes wifi.

Editar: Acabei de encontrar este post explicando como usar o nmcli e é muito melhor do que wpa_cli, pois é compatível com o GUI Network Manager e suas configurações e redes Wi-Fi salvas.

Exemplo de uso de wpa_cli:

Verifique se eu já tenho uma interface de rede habilitada para 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

Verifique se o processo wpa_suplicant está em execução:

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

Entre no modo interativo do cliente wpa:

# wpa_client

Listar os pontos de acesso disponíveis:

> scan
> scan_results

... e você tem algo assim:

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

Adicione seu AP:

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

Selecione como atual:

> enable_network 0

Conecte-se a ele:

> reconnect

Verifique o status:

> status

Saia do wpa_cli:

> quit

No shell, solicite o DHCP para um IP e configurações de rede:

# dhclient -r
# dhclient wlan0

5
2017-10-06 16:12





Primeiro brig seu cartão se não é runnig:

ifconfig wlan0 up

Defina os parâmetros de acordo com sua rede

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

3
2018-05-17 15:54



Eu acredito que isso é apenas para WEP. Não WPA;) - Rinzwind
Rinzwind está certo. Isso é para WEP. Desculpe pelo erro. - LnxSlck
sem problemas. Deixe aqui e alguém um dia se beneficiará da sua resposta;) - Rinzwind
Isso funcionará mesmo sem uma chave como uma rede aberta? - EvoandroidEvo
Espero que ninguém se beneficie de uma resposta específica do WEP: '( - Max Ried


Na verdade, existe uma maneira de fazer isso usando o NetworkManager, se você tiver o checkbox pacote instalado.

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

(Crédito: bug 923836, que surgiu nas minhas pesquisas sobre o assunto.


2
2018-05-17 16:32





Todas as respostas sugerindo wpa_supplicant estão erradas. Sim, isso pode conectá-lo à rede WPA, mas é uma solução ruim a longo prazo porque será muito difícil de manter e não funcionará bem com uma conexão com fio. Ler esta resposta e facilite sua vida usando o Network Manager na linha de comando. Eu perdi horas tentando configurar o wpa_supplicant, então tentei o nmcli e ele "apenas funcionou".


2
2017-07-25 22:23



O problema com as coisas, o 'trabalho justo' é que elas podem facilmente 'simplesmente não funcionar' e então onde você está. Para pessoas da CLI, a abordagem direta do wpa_supplicant é melhor porque expõe todas as suas partes. A grande virtude do NM é que todas as suas partes estão escondidas. Portanto, é errado dizer que a abordagem wpa_supplicant está errada. Você gosta de coisas que "simplesmente funcionam", tudo bem. Sua preferência é sua, mas é indelicado dizer às pessoas que elas estão erradas só porque a preferência delas não é sua. É por isso que eu diminuí sua resposta. - Stephen Boston


Você pode usar o VSWM - Very Simple Wireless Manager. Você coloca seus APs conhecidos em um arquivo cfg simples (/etc/vswm.cfg) e quando você executa vswm ele verifica as redes disponíveis e conecta seu cartão com o primeiro que aparece em /etc/vswm.cfg.

VSWM está disponível em https://github.com/dmelo/vswm . Aqui está uma seleção de como o arquivo de configuração vswm.cfg se parece:

[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

Nos bastidores, ele usa as ferramentas de linha de comando padrão: iwlist, wpa_supplicant, iwconfig, dhclient ... Apenas ele automatiza o trabalho.


2
2017-09-18 03:42





Eu tive problemas em usar wpa_supplicant diretamente para entrar em uma rede sem fio. Meu ID de rede e senha geraram erros quando usei o wpa_supplicant.conf arquivo no wpa_supplicant linha de comando, por ex.

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

Eu fui capaz de contornar isso com wpa_cli. A sequência de comandos que eu tive que usar, já que estou usando um driver do Windows com o ndiswrapper do Linux, é:

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

Eu tinha a rede configurada adicionando-a na seção sem fio da rede na GUI, então que eu poderia clicar no ícone da rede com ou sem fio e selecionar o provedor sem fio (o que às vezes era necessário para completar o login).


1
2017-12-03 06:46





o nmcli é a versão de linha de comando do aplicativo gerenciador de rede padrão no Ubuntu.

Algumas das vantagens são que ele usa a configuração que você já tem da interface gráfica e não precisa de acesso root.

Você pode correr nmcli para mostrar as opções disponíveis.

Exemplo para se conectar a um wifi chamado MYESSID:

    nmcli c up MYESSID   

0
2018-01-31 12:46