Wie verbinde ich mich über die Befehlszeile mit einem WPA-WLAN?

Antworten:

113

iw (list / config) kann nur mit WEP umgehen.

Sie benötigen das wpasupplicantPaket, das den wpa_supplicantBefehl bereitstellt . Installieren Sie es bei Bedarf über sudo apt-get install wpasupplicant.

Sie geben Ihre SSID und Ihr Passwort ein /etc/wpa_supplicant.conf(erfordert sudo).

Beispiel:

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

Angenommen, Ihre Schnittstelle ist wlan0, mit dem Sie eine Verbindung herstellen können:

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

"wext" ist ein Treiber, der für jede Karte spezifisch ist. beziehen sich auf wpa_supplicant -h. Beispiele:

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
quelle
Nun, das ist schön, dass iwlist / iwconfig nur mit WEP umgehen kann, aber in meinem Fall wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 nicht mit dem drahtlosen Netzwerk verbunden ist, obwohl der NetworkManager mich standardmäßig mit dem Netzwerk verbindet. Ich möchte die Befehlszeile ausprobieren. Gibt es einen Fehler, den ich mache?
Registrierter Benutzer
Der letzte Befehl besteht eigentlich aus zwei Befehlen, und Sie müssen beide als root(Systemadministrator) ausführen . Also sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 oder teilen Sie sie in zwei Befehle um &&.
Anders
Diese Lösung gibt mir den Fehler "wlan0: Nicht unterstützter Treiber 'ext'".
Cerin
1
@Rinzwind, Ja ... Wenn Sie die Hilfeseite von wpa_supplicant durchsehen, werden Sie feststellen, dass der Treiber möglicherweise unterschiedlich ist, sodass Ihr Befehl wahrscheinlich nicht so funktioniert, wie er wörtlich angegeben ist. Sie müssen den -D <Treiber> für Ihre spezifische Hardware auswählen. Für mich war es schließlich "nl80211".
Cerin
1
Ich lasse die Option -D einfach komplett weg und es funktioniert! Vielen Dank! :)
Ray
72

Dieser Link zeigt alles und hat für mich gut funktioniert: http://linux.icydog.net/wpa.php

Ich kopiere den Inhalt hierher, damit wir ihn haben, falls die Site offline geht.

Befehlszeile WPA

Manchmal befinden Sie sich an einer Befehlszeile ohne Zugriff auf GUI-Netzwerktools - Ihr Zugriffspunkt ist jedoch mit WPA gesichert. Wie geht's?

Vorausgesetzt, Ihre WLAN-Karte funktioniert tatsächlich (dh, iwconfig kann sie sehen und damit interagieren), ist die Verwendung von wpa_supplicant eigentlich recht einfach. Wpa_supplicant wird installiert

In den meisten Distributionen ist heute standardmäßig wpa_supplicant installiert. Wenn Sie die Befehle wpa_passphrase und wpa_supplicant zur Verfügung haben, können Sie loslegen. Andernfalls müssen Sie das Paket folgendermaßen installieren (für Ubuntu):

$ sudo apt-get install wpasupplicant

Oder (für Fedora):

# yum install wpa_supplicant

Oder was auch immer der Befehl für Ihre Distribution ist.

Generierung der Konfigurationsdatei

Nach der Installation von wpa_supplicant erstellen wir die Konfigurationsdatei. Sobald Sie die SSID- und WPA-Passphrase kennen, müssen Sie nur noch Folgendes ausführen:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

Natürlich ersetzen Sie "myrouter" durch die SSID Ihres Routers, "mypassphrase" durch Ihre WPA-Passphrase und "wpa.conf" durch die Datei, in der Sie die Konfiguration speichern möchten. Dieser Dateiname muss keinem bestimmten Format oder Format entsprechen eine bestimmte Erweiterung haben.

Um zu vermeiden, dass die Passphrase in die Befehlszeile eingegeben wird (damit sie nicht im Shell-Verlauf gespeichert wird), können Sie in der Befehlszeile nur die SSID angeben. wpa_passphrase wartet darauf, dass Sie die Passphrase eingeben, gefolgt von der Eingabe von:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Sie sollten am Ende eine Datei haben, die so aussieht:

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

Verbindung herstellen

Jetzt führen wir tatsächlich wpa_supplicant aus, um eine Verbindung zum drahtlosen Netzwerk herzustellen. Erstens, wenn Ihr Router seine SSID sendet (dies geschieht standardmäßig alle), möchten Sie wahrscheinlich sicherstellen, dass Ihre WLAN-Karte diese tatsächlich sehen kann:

$ iwlist scan

Möglicherweise müssen Sie das als root ausführen, um eine Aktualisierung zu erzwingen.

Als Nächstes müssen Sie drei Informationen kennen:

  1. Welche WLAN-Treiber von wpa_supplicant für Ihre Karte verwendet werden sollen. Running wpa_supplicant --helplistet die verschiedenen Treiber auf (unter "drivers:"). Ab 0.5.8, sind die nützlichen Möglichkeiten: wext, hostap, madwifi, atmel, ndiswrapper, und ipw(IPW ist für alten Kernel nur,> = 2.6.13 sollte wext verwenden). Wenn Sie keine bestimmte Übereinstimmung für Ihre Karte sehen, versuchen Sie es mit wext, denn das ist der Clou.
  2. Das Netzwerkgerät Ihrer Karte. Dies ist normalerweise eth1 oder wlan0, aber wenn Sie sich nicht sicher sind, können Sie einfach ausführen iwconfig. Es meldet "keine drahtlosen Nebenstellen" für nicht drahtlose Geräte und zeigt einige Daten für drahtlose Geräte an.
  3. Der Pfad zu der Konfigurationsdatei, die Sie im vorherigen Schritt erstellt haben.

Nun, da Sie diese Daten haben, führen Sie (als root):

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

Zwischen den Optionen und Parametern befinden sich keine Leerzeichen. Schließen Sie die Klammern nicht ein, da ich sie nur der Übersichtlichkeit halber hinzugefügt habe. Für meinen Laptop sieht es zum Beispiel so aus:

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

Sie können es auch im Hintergrund ausführen, indem Sie die -BOption verwenden, damit Ihre Konsole nicht belegt wird.

Jetzt sind Sie mit dem Netzwerk verbunden.

Online gehen

Um tatsächlich online zu gehen, musst du irgendwie eine IP bekommen. Die meisten Leute werden nur eine dynamische IP von einem DHCP-Server erhalten wollen, wahrscheinlich derjenige, der in den Router eingebaut ist. (Ich werde mich nicht mit dem Festlegen einer statischen IP-Adresse und einer Routing-Tabelle befassen, da dies ein Biest für sich ist.)

Um eine DHCP-Lease zu erhalten, geben Sie zunächst alle Leases frei, an denen Sie noch festhalten (als Root):

# dhclient -r

Dann fordern Sie ein neues Leasing an (natürlich ersetzen Sie eth1 durch den Namen Ihres Netzwerkgeräts, den gleichen, den Sie im vorherigen Abschnitt verwendet haben):

# dhclient eth1

Sie haben jetzt zumindest theoretisch eine IP. Viel Spaß beim Surfen!

Alexandre Schmidt
quelle
1
Für unerfahrene Benutzer lauten die meisten Namen der WLAN-Kartenschnittstelle wlan <Nummer>, sodass beispielsweise die erste WLAN-Karte in Ihrer Konfiguration wlan0 anstelle von eth1
xorinzor
Danke, der Befehl wpa_passphrase hat geholfen. Ich habe die akzeptierte Antwort ausprobiert, aber die Datei war falsch, wpa_passphrase hat mir dabei geholfen, und dann habe ich den zweiten Befehl der akzeptierten Antwort übergeben (ich wusste bereits, dass er wlan0 heißt) ...
Lilian A. Moraru
Danke, das war wirklich toll. Kannst du mir ein Link-Cover geben, wie das Setup statisch und die Routing-Tabelle ist? :)
Yassine
1
@AlexandreSchmidt +1 für die Vollständigkeit!
John Strood
@JohnStrood Sie sollten sich unbedingt bei demjenigen bedanken, der die Website geschrieben hat, da es sich um eine Kopie von dort handelt
icc97
8

In Debian und anderen Distributionen wird wpa_suplicant standardmäßig als Dienst ausgeführt, um die WLAN-Netzwerke zu verwalten. wpa_suplicant kann von verschiedenen Clients / Frontends wie der Netzwerkmanager-GUI verarbeitet werden. Dies wird in diesem Debian-Wiki besser erklärt .

wpa_cli ist der Befehlszeilen-Client wpa_suplicant zum Verwalten der WLAN-Netzwerke.

Bearbeiten : Ich habe gerade diesen Beitrag gefunden, in dem erklärt wird, wie man nmcli verwendet, und er ist viel besser als wpa_cli, da er mit dem GUI Network Manager und seinen Einstellungen kompatibel ist und WLAN-Netzwerke speichert.

Anwendungsbeispiel von wpa_cli :

Überprüfen Sie, ob ich bereits eine WLAN-fähige Netzwerkschnittstelle habe:

# 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

Überprüfen Sie, ob der Prozess wpa_suplicant ausgeführt wird:

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

Im interaktiven wpa-Client-Modus eingeben:

# wpa_cli

Liste der verfügbaren Zugangspunkte:

> scan
> scan_results

... und du bekommst so etwas:

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

Füge deinen AP hinzu:

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

Wählen Sie es als aktuell:

> enable_network 0

Stellen Sie eine Verbindung her:

> reconnect

Überprüfen Sie den Status:

> status

Wpa_cli beenden:

> quit

Fordern Sie über die Shell DHCP für IP- und Netzeinstellungen an:

# dhclient -r
# dhclient wlan0
David
quelle
Warum redest du wpa_cliund dann schreibst du wpa_client? Auf Kubuntu wpa_clientscheint 18.10 nicht als Kommando zu existieren
rtrtrt
Sie haben recht ... behoben.
David
3

Bringen Sie zuerst Ihre Karte in Schwung, wenn sie nicht läuft:

ifconfig wlan0 up

Stellen Sie die Parameter entsprechend Ihrem Netzwerk ein

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
LnxSlck
quelle
15
Ich glaube, dass dies nur für WEP ist. Kein WPA;)
Rinzwind
Rinzwind ist richtig. Dies ist für WEP. Entschuldigung für den Fehler.
LnxSlck
2
kein Problem. Lass es hier und irgendwann wird jemand von deiner Antwort profitieren;)
Rinzwind
funktioniert das auch ohne schlüssel wie ein offenes netzwerk?
EvoandroidEvo
1
Ich hoffe, niemand profitiert jemals von einer WEP-spezifischen Antwort: '(
Max Ried
2

Es gibt tatsächlich eine Möglichkeit, dies mit NetworkManager zu tun, wenn Sie das checkboxPaket installiert haben.

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

( Quelle : Fehler 923836 , der bei meinen Suchen zu diesem Thema aufgetreten ist.)

Zickzack
quelle
2

Alle Antworten, die auf wpa_supplicant hindeuten, sind falsch. Ja, es kann Sie mit dem WPA-Netzwerk verbinden, aber das ist auf lange Sicht eine schlechte Lösung, da es sehr schwierig zu warten ist und mit einer Kabelverbindung nicht gut funktioniert. Lesen Sie diese Antwort und erleichtern Sie sich das Leben, indem Sie Network Manager über die Befehlszeile verwenden. Ich habe Stunden damit verbracht, wpa_supplicant zu konfigurieren, dann habe ich nmcli ausprobiert und es hat "einfach funktioniert".

Cerin
quelle
2
Das Problem bei Dingen, die "nur funktionieren", ist, dass sie leicht "einfach nicht funktionieren" und wo bist du dann? Für CLI-Benutzer ist der direkte Ansatz von wpa_supplicant besser, da alle seine Teile verfügbar gemacht werden. Die große Tugend von NM ist, dass alle seine Teile versteckt sind. Es ist also falsch zu sagen, dass der Ansatz von wpa_supplicant falsch ist. Du magst Dinge, die 'einfach funktionieren', okay. Ihre Präferenz ist Ihr Recht, aber es ist unhöflich, den Leuten mitzuteilen, dass sie Unrecht haben, nur weil ihre Präferenz nicht Ihre ist. Deshalb habe ich Ihre Antwort herabgestuft.
Stephen Boston
2

Sie können VSWM - Very Simple Wireless Manager verwenden. Sie platzieren Ihre bekannten APs in einer einfachen cfg-Datei (/etc/vswm.cfg). Wenn Sie sie ausführen, durchsuchen Sie vswmdie verfügbaren Netzwerke und verbinden Sie Ihre Karte mit der ersten, die in /etc/vswm.cfg angezeigt wird.

VSWM ist unter https://github.com/dmelo/vswm verfügbar . Hier ist eine Auswahl davon, wie die Konfigurationsdatei vswm.cfg aussieht:

[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

Unter der Haube werden die Standardbefehlszeilentools verwendet: iwlist, wpa_supplicant, iwconfig, dhclient ... Nur der Job wird automatisiert.

Diogo Melo
quelle
1

Ich hatte Probleme, wpa_supplicantdirekt auf ein drahtloses Netzwerk zuzugreifen. Meine Netzwerk-ID und mein Kennwort haben Fehler generiert, als ich die wpa_supplicant.confDatei in der wpa_supplicantBefehlszeile verwendet habe, z

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

Ich konnte damit umgehen wpa_cli. Die Befehlsfolge, die ich verwenden musste, da ich einen Windows-Treiber mit Linux ndiswrapper verwende, lautet:

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

Ich habe das Netzwerk eingerichtet, indem ich es im Abschnitt "Drahtlos" des Netzwerks in der GUI hinzugefügt habe, sodass ich auf das Symbol für ein verkabeltes oder drahtloses Netzwerk klicken und den Drahtlosanbieter auswählen konnte (was manchmal erforderlich war, um die Anmeldung abzuschließen).

John
quelle
1

Dies nmcliist die Befehlszeilenversion der Standard-Netzwerkmanager-App unter Ubuntu.

Einige der Vorteile sind, dass die Konfiguration verwendet wird, die Sie bereits über die grafische Oberfläche haben, und kein Root-Zugriff erforderlich ist.

Sie können ausführen nmcli, um die verfügbaren Optionen anzuzeigen.

Beispiel für eine Verbindung mit einem WLAN namens MYESSID:

    nmcli c up MYESSID   
desgua
quelle
1
nmcli, nm-applet und ja, deine antwort ist die beste, aber ich weiß nicht, warum niemand abstimmt
Saeid
@Saeid Danke!
Desgua