Como me conecto a uma rede wifi WPA usando a linha de comando?

Respostas:

113

iw (list / config) pode lidar apenas com WEP.

Você precisa do wpasupplicantpacote que fornece o wpa_supplicantcomando, instale se necessário sudo apt-get install wpasupplicant.

Você coloca seu SSID e senha /etc/wpa_supplicant.conf(requer sudo).

Exemplo:

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

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

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

"wext" é um driver e isso será específico para cada cartão; consulte 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.
Rinzwind
fonte
bem, isso é bom que o iwlist / iwconfig possa lidar apenas com o WEP, mas no meu caso wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 não se conectou à rede sem fio, embora por padrão o NetworkManager me conecte à rede, quero tentar a linha de comando. Existe algum erro que estou cometendo?
Usuário Registrado
O último comando é na verdade dois comandos e você precisa executar ambos como root(administrador do sistema). Então, sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 ou divida-os em dois comandos &&.
Anders
Esta solução fornece o erro "wlan0: Driver não suportado 'ext'".
Cerin
11
@Rinzwind, Sim ... Olhar através da página de manual do wpa_supplicant mostra que o driver pode variar, portanto, seu comando provavelmente não funcionará como literalmente indicado. Você precisa escolher o -D <driver> para o seu hardware específico. Para mim, acabou sendo "nl80211".
Cerin
11
Eu simplesmente omiti completamente a opção -D e funciona! Obrigado! :) #
Ray #
72

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

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

Linha de comando WPA

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

Supondo que sua placa sem fio realmente funcione (ou seja, o iwconfig pode vê-la e interagir com ela), usar o wpa_supplicant é realmente muito simples. Instalando o wpa_supplicant

Atualmente, a maioria das distros possui o wpa_supplicant instalado por padrão. Se você tiver os comandos wpa_passphrase e wpa_supplicant disponíveis, estará pronto. Caso contrário, você precisará instalar o pacote fazendo algo como (para Ubuntu):

$ sudo apt-get install wpasupplicant

Ou (para o Fedora):

# yum install wpa_supplicant

Ou qualquer que seja o comando para sua distribuição.

Gerando o arquivo de configuração

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

$ wpa_passphrase myrouter mypassphrase > wpa.conf

Obviamente, substitua "myrouter" pelo SSID do seu roteador, "mypassphrase" pela senha WPA e "wpa.conf" pelo arquivo em que deseja armazenar a configuração. Esse nome de arquivo não precisa seguir um formato específico ou tem uma extensão específica.

Como alternativa, para evitar digitar a senha 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 senha seguida de enter:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Você deve terminar com um arquivo parecido com este:

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

Conectando-se

Agora, executaremos o wpa_supplicant para conectar-se à rede sem fio. Primeiro, se o seu roteador transmitir seu SSID (todos eles funcionam por padrão), você provavelmente deseja garantir que sua placa sem fio possa vê-lo:

$ iwlist scan

Pode ser necessário executá-lo como root para forçar uma atualização.

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

  1. Quais drivers sem fio wpa_supplicant usar para o seu cartão. Em execução, wpa_supplicant --helplista os diferentes drivers que possui (em "drivers:"). A partir de 0.5.8, as escolhas ú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 o wext, pois esse é o tipo de coisa fácil.
  2. O dispositivo de rede da sua placa. Isso geralmente é eth1 ou wlan0, mas se você não tiver certeza, pode simplesmente executar iwconfig. Ele reportará "sem extensões sem fio" para dispositivos não-sem fio e exibirá alguns dados para quaisquer dispositivos sem fio.
  3. O caminho para o arquivo de configuração que você criou na etapa anterior.

Agora que você possui 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 o meu laptop, fica assim:

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

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

Agora você está associado à rede.

Ficar online

Para realmente ficar online, você precisará obter um IP de alguma forma. A maioria das pessoas deseja obter um IP dinâmico de um servidor DHCP, provavelmente o que está embutido no roteador. (Não vou cobrir a configuração de um IP estático e uma tabela de roteamento, porque isso é um animal em si.)

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

# dhclient -r

Em seguida, solicite uma nova concessão (é claro que substitua eth1 pelo nome do seu dispositivo de rede, o mesmo que você usou na seção anterior):

# dhclient eth1

Agora você tem um IP, pelo menos em teoria. Feliz surf!

Alexandre Schmidt
fonte
11
FYI para pessoas inexperientes, a maioria dos nomes de interface cartão sem fio será wlan <number>, assim, por exemplo, o primeiro cartão sem fio na sua configuração será wlan0 em vez de eth1
xorinzor
Obrigado, o comando wpa_passphrase ajudou. Tentei a resposta aceita, mas o arquivo estava errado, o wpa_passphrase ajudou com isso e depois passei o segundo comando da resposta aceita (já sabia com certeza que se chama wlan0) ...
Lilian A. Moraru
graças daquele era realmente grande, u pode me dar cobertura ligação como configuração da tabela estático e roteamento ... :)
Yassine
11
@AlexandreSchmidt +1 por ser abrangente!
John Strood
@JohnStrood estritamente você deve agradecer a quem escreveu o site, já que é uma cópia de lá
icc97
8

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

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

Edit : Acabei de encontrar este post explicando como usar o nmcli e é muito melhor do que o wpa_cli, pois é compatível com o GUI Network Manager e suas configurações e salvou as redes wifi.

Exemplo de uso de wpa_cli :

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

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_cli

Listar pontos de acesso disponíveis:

> scan
> scan_results

... e você terá algo parecido com isto:

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 ao DHCP as configurações de IP e de rede:

# dhclient -r
# dhclient wlan0
David
fonte
Por que você fala wpa_clie depois escreve wpa_client? No Kubuntu 18.10 wpa_clientparece não existir como um comando
rtrtrt
Você está certo ... fixo.
David David
3

Primeiro, crie seu cartão se não estiver em execução:

ifconfig wlan0 up

Defina os parâmetros de acordo com a sua rede

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
LnxSlck
fonte
15
Eu acredito que isso é apenas para WEP. No WPA;)
Rinzwind
Rinzwind está certo. Isto é para WEP. Desculpe pelo erro.
LnxSlck
2
sem problemas. Deixe-o aqui e alguém um dia se beneficiará da sua resposta;)
Rinzwind
isso funcionará mesmo sem uma chave como uma rede aberta?
EvoandroidEvo
11
Espero que ninguém se beneficie de uma resposta específica do WEP: '(
Max Ried
2

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

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

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

zigg
fonte
2

Todas as respostas que sugerem wpa_supplicant estão erradas. Sim, pode conectá-lo à rede WPA, mas essa é 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. Leia esta resposta e facilite sua vida usando o Network Manager na linha de comando. Perdi horas tentando configurar o wpa_supplicant, depois tentei o nmcli e "apenas funcionou".

Cerin
fonte
2
O problema com as coisas que o 'apenas trabalha' é que elas podem facilmente 'simplesmente não funcionar' e então onde está você. Para as pessoas da CLI, a abordagem direta wpa_supplicant é melhor porque expõe todas as suas partes. A grande virtude do NM é que todas as suas partes estão ocultas. 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 apenas porque a preferência delas não é sua. Foi por isso que marquei sua resposta.
Stephen Boston
2

Você pode usar o VSWM - Very Simple Wireless Manager. Você coloca seus pontos de acesso conhecidos em um arquivo cfg simples (/etc/vswm.cfg) e, quando o executa vswm, verifica as redes disponíveis e conecta sua placa à primeira que aparece em /etc/vswm.cfg.

O 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

Sob o capô, ele usa as ferramentas de linha de comando padrão: iwlist, wpa_supplicant, iwconfig, dhclient ... Somente ele automatiza o trabalho.

Diogo Melo
fonte
1

Ocorreu um problema ao usar wpa_supplicantdiretamente para acessar uma rede sem fio. Minha identificação de rede e senha geraram erros quando usei o wpa_supplicant.confarquivo na wpa_supplicantlinha de comando, por exemplo

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

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

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

Eu configurei a rede adicionando-a na seção sem fio da rede na GUI, para poder clicar no ícone de rede com ou sem fio e selecionar o provedor sem fio (às vezes necessário para concluir o logon).

John
fonte
1

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

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

Você pode executar nmclipara mostrar as opções disponíveis.

Exemplo para conectar-se a um wifi chamado MYESSID:

    nmcli c up MYESSID   
desgua
fonte
11
nmcli, nm-applet, e sim sua resposta é a melhor, mas não sei por que ninguém vota
Saeid
@Saeid Obrigado!
desgua 30/08