Verbinden mit Wi-Fi von Terminal auf Ubuntu 18.04/20.04 mit WPA-Supplicant

In diesem Tutorial werden wir lernen, wie man eine Verbindung zum Wi-Fi-Netzwerk von der Kommandozeile auf Ubuntu 18.04/20.04 Server und Desktop mit wpa_supplicant. In einem modernen drahtlosen Heimnetzwerk wird die Kommunikation mit WPA-PSK (Pre-Shared Key) geschützt, im Gegensatz zu WPA-Enterprise, das für Unternehmensnetzwerke konzipiert ist. WPA-PSK ist auch als WPA-Personal bekannt. wpa_supplicant ist eine Implementierung der WPA-Supplicant-Komponente. Ein Supplicant im Wireless LAN ist eine Client-Software, die auf dem Computer des Endbenutzers installiert ist und die authentifiziert werden muss, um einem Netzwerk beizutreten.

Schritt 1: Finden Sie den Namen Ihrer Wireless-Schnittstelle und Ihres Wireless-Netzwerks

Rufen Sie den Befehl iwconfig auf, um den Namen Ihrer Wireless-Schnittstelle zu finden.

iwconfig

wlan0 war früher ein gängiger Name für die drahtlose Netzwerkschnittstelle auf Linux-Systemen ohne Systemd. Da Ubuntu Systemd verwendet, werden Sie feststellen, dass Ihre drahtlose Netzwerkschnittstelle einen Namen wie wlp4s0 hat. Sie können auch sehen, dass es im Moment mit keinem Zugangspunkt verbunden ist.

Ubuntu Server connect to wifi terminal

Wenn Ihre drahtlose Schnittstelle nicht angezeigt wird, müssen Sie sie vielleicht mit dem folgenden Befehl aufrufen.

sudo ifconfig wlp4s0 up

Dann finden Sie den Namen Ihres drahtlosen Netzwerks, indem Sie Netzwerke in der Nähe mit dem folgenden Befehl scannen. Ersetzen Sie wlp4s0 durch den Namen Ihrer eigenen drahtlosen Schnittstelle. ESSID ist der Netzwerknamen-Bezeichner.

sudo iwlist wlp4s0 scan | grep ESSID

ubuntu 19.04 connect to wifi command line wpa supplicant

Schritt 2: Verbinden mit Wi-Fi-Netzwerk mit WPA_Supplicant

Nun installieren Sie wpa_supplicant auf Ubuntu 18.04/20.04 aus dem Standard-Software-Repository.

sudo apt install wpasupplicant

Wir müssen eine Datei namens wpa_supplicant.conf mit dem wpa_passphrase-Dienstprogramm erstellen. wpa_supplicant.conf ist die Konfigurationsdatei, in der alle Netzwerke beschrieben werden, mit denen sich der Benutzer mit dem Computer verbinden möchte. Führen Sie den folgenden Befehl aus, um diese Datei zu erstellen. Ersetzen Sie die ESSID und die Wi-Fi-Passphrase durch Ihre eigene.

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf

wpa_passphrase

Beachten Sie, dass ich im obigen Screenshot meine ESSID in Anführungszeichen gesetzt habe, da meine ESSID ein Leerzeichen enthält.

Die Ausgabe des wpa_passphrase-Befehls wird an tee weitergeleitet und dann in die /etc/wpa_supplicant.conf-Datei geschrieben. Verwenden Sie nun den folgenden Befehl, um Ihre Wireless-Karte mit einem Wireless Access Point zu verbinden.

sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0

Die folgende Ausgabe zeigt an, dass Ihre Wireless-Karte erfolgreich mit einem Access Point verbunden ist.

Successfully initialized wpa_supplicantwlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Associated with c5:4a:21:53:ac:ebwlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed 

Hinweis: Wenn Sie die Ubuntu-Desktop-Edition verwenden, müssen Sie den Network Manager mit dem folgenden Befehl stoppen, da es sonst zu Verbindungsproblemen bei der Verwendung von wpa_supplicant kommt.

sudo systemctl stop NetworkManager

Und deaktivieren Sie den Autostart von NeworkManager beim Booten, indem Sie den folgenden Befehl ausführen.

sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager

Standardmäßig läuft wpa_supplicant im Vordergrund. Wenn die Verbindung hergestellt ist, öffnen Sie ein weiteres Terminalfenster und führen

iwconfig

Sie können sehen, dass die drahtlose Schnittstelle nun mit einem Zugangspunkt verbunden ist.

Wifi unter Ubuntu mit Terminal-Befehl aktivieren

Mit dem Flag CTRL+C können Sie den aktuellen wpa_supplicant-Prozess anhalten und im Hintergrund laufen lassen.

sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0

Wir sind zwar authentifiziert und mit dem drahtlosen Netzwerk verbunden, aber wir haben noch keine IP-Adresse. Um eine private IP-Adresse vom DHCP-Server zu erhalten, verwenden Sie den folgenden Befehl:

sudo dhclient wlp4s0

Jetzt hat Ihre drahtlose Schnittstelle eine private IP-Adresse, die mit angezeigt werden kann:

ip addr show wlp4s0

ubuntu dhclient obtain private ip address

Nun können Sie auf das Internet zugreifen. Um die private IP-Adresse freizugeben, führen Sie

sudo dhclient wlp4s0 -r

Verbinden mit dem versteckten drahtlosen Netzwerk

Wenn Ihr drahtloser Router die ESSID nicht sendet, dann müssen Sie die folgende Zeile in die /etc/wpa_supplicant.conf-Datei einfügen.

scan_ssid=1

Wie unten:

network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1}

Schritt 3: Automatische Verbindung beim Booten

Um eine automatische Verbindung zum drahtlosen Netzwerk beim Booten herzustellen, müssen wir die wpa_supplicant.service-Datei bearbeiten. Es ist eine gute Idee, die Datei aus dem Verzeichnis /lib/systemd/system/ in das Verzeichnis /etc/systemd/system/ zu kopieren und dann den Inhalt der Datei zu bearbeiten, denn wir wollen nicht, dass eine neuere Version von wpa_supplicant unsere Änderungen überschreibt.

sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service

Bearbeiten Sie die Datei mit einem Befehlszeilen-Texteditor, z. B. Nano.

sudo nano /etc/systemd/system/wpa_supplicant.service

Finden Sie die folgende Zeile.

ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant

Ändern Sie sie wie folgt. Hier haben wir die Konfigurationsdatei und den Namen der drahtlosen Schnittstelle zum ExecStart-Befehl hinzugefügt.

ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0

Es wird empfohlen, immer zu versuchen, wpa_supplicant neu zu starten, wenn ein Fehler erkannt wird. Fügen Sie das Folgende direkt unter der ExecStart-Zeile ein.

Restart=always

Wenn Sie die folgende Zeile in dieser Datei finden, kommentieren Sie sie aus (fügen Sie das Zeichen # am Anfang der Zeile ein).

Alias=dbus-fi.w1.wpa_supplicant1.service

Speichern und schließen Sie die Datei. (Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O, dann drücken Sie Enter zur Bestätigung. Zum Beenden drücken Sie Ctrl+X). Dann laden Sie systemd neu.

sudo systemctl daemon-reload

Aktivieren Sie den wpa_supplicant-Dienst, damit er beim Booten startet.

sudo systemctl enable wpa_supplicant.service

Wir müssen auch dhclient beim Booten starten, um eine private IP-Adresse vom DHCP-Server zu erhalten. Dies kann durch das Erstellen einer systemd-Diensteinheit für dhclient erreicht werden.

sudo nano /etc/systemd/system/dhclient.service

Fügen Sie den folgenden Text in die Datei ein.

Description= DHCP ClientBefore=network.targetAfter=wpa_supplicant.serviceType=forkingExecStart=/sbin/dhclient wlp4s0 -vExecStop=/sbin/dhclient wlp4s0 -rRestart=always WantedBy=multi-user.target

Speichern und schließen Sie die Datei. Aktivieren Sie anschließend diesen Dienst.

sudo systemctl enable dhclient.service

So erhalten Sie eine statische IP-Adresse

Wenn Sie eine statische IP-Adresse erhalten möchten, müssen Sie dhclient.service deaktivieren.

sudo systemctl disable dhclient.service

Wir müssen netplan verwenden, um eine statische IP-Adresse unter Ubuntu 18.04/20.04 zu konfigurieren. Erstellen Sie eine Konfigurationsdatei unter /etc/netplan/.

sudo nano /etc/netplan/10-wifi.yaml

Fügen Sie dieser Datei die folgenden Zeilen hinzu. Ersetzen Sie 192.168.0.102 mit Ihrer gewünschten IP-Adresse. Achten Sie bitte auf die Einrückung. Ein zusätzliches Leerzeichen würde die Konfiguration ungültig machen.

network: ethernets: wlp4s0: dhcp4: no addresses: gateway4: 192.168.0.1 version: 2

Speichern und schließen Sie die Datei. Dann wenden Sie die Konfigurationen an.

sudo netplan apply

Sie können auch die Option --debug einschalten, wenn es nicht wie erwartet funktioniert.

sudo netplan --debug apply

Wenn es andere .yaml Dateien unter /etc/netplan/ Verzeichnis gibt, dann wird netplan automatisch Konfigurationen aus verschiedenen Dateien zusammenführen. netplan verwendet systemd-networkd als Backend-Netzwerk-Renderer. Es wird empfohlen, das wpa_supplicant.service vor systemd-networkd.service laufen zu lassen, damit das System sich zuerst mit einem Wi-Fi-Zugangspunkt verbindet und dann eine private IP-Adresse erhält.

sudo nano /etc/systemd/system/wpa_supplicant.service

Suchen Sie die folgende Zeile.

Before=network.target

Ändern Sie sie zu:

Before=network.target systemd-networkd.service

Speichern und schließen Sie die Datei.

Eine andere Möglichkeit, eine statische IP-Adresse zu erhalten, besteht darin, sich in die Verwaltungsoberfläche Ihres Routers einzuloggen und der MAC-Adresse Ihrer WLAN-Karte eine statische IP-Adresse zuzuweisen, wenn Ihr Router diese Funktion unterstützt.

Verwendung eines Hostnamens für den Zugriff auf Dienste unter Ubuntu

Eigentlich müssen Sie keine statische IP-Adresse für Ihre Ubuntu-Box erhalten. Ubuntu kann mDNS (Multicast DNS) verwenden, um seinen Hostnamen im lokalen Netzwerk bekannt zu geben und Clients können mit diesem Hostnamen auf Dienste auf Ihrer Ubuntu-Box zugreifen. Dieser Hostname kann immer zur IP-Adresse Ihrer Ubuntu-Box aufgelöst werden, auch wenn sich die IP-Adresse ändert.

Um mDNS zu verwenden, müssen Sie avahi-daemon installieren, eine Open-Source-Implementierung von mDNS/DNS-SD.

sudo apt install avahi-daemon

Starten Sie den Dienst.

sudo systemctl start avahi-daemon

Autostart beim Booten aktivieren.

sudo systemctl enable avahi-daemon

Avahi-daemon lauscht auf UDP 5353, daher müssen Sie diesen Port in der Firewall öffnen. Wenn Sie UFW verwenden, dann führen Sie den folgenden Befehl aus.

sudo ufw allow 5353/udp

Dann sollten Sie mit dem Befehl hostnamectl einen eindeutigen Hostnamen für Ihre Ubuntu-Box festlegen. Ersetzen Sie ubuntubox durch Ihren bevorzugten Hostnamen, der nicht bereits von anderen Geräten im lokalen Netzwerk belegt sein sollte.

sudo hostnamectl set-hostname ubuntubox

Nun starten Sie avahi-daemon neu.

sudo systemctl restart avahi-daemon

Wenn Sie den Status mit

systemctl status avahi-daemon

überprüfen, sehen Sie den mDNS-Hostnamen, der mit der .local-Domain endet.

avahi-daemon mdns hostname

Auf dem Client-Computer müssen Sie außerdem eine mDNS/DNS-SD-Software installieren.

  • Linux-Benutzer sollten avahi-daemon installieren.
  • Windows-Benutzer müssen den Bonjour-Dienst aktivieren, indem sie entweder den Bonjour-Druckdienst installieren oder iTunes installieren.
  • Auf macOS ist Bonjour vorinstalliert.

Nun können Sie auf Dienste zugreifen, indem Sie den ubuntubox.local Hostnamen verwenden, wodurch die Notwendigkeit entfällt, die IP-Adresse zu prüfen und einzugeben.

Wifi auf dem Raspberry Pi entsperren

Das Ubuntu ARM OS für Raspberry Pi blockiert standardmäßig die drahtlose Schnittstelle. Sie müssen die Blockierung aufheben:

sudo rfkill unblock wifi

Um die Blockierung beim Booten aufzuheben, erstellen Sie eine systemd Service Unit.

sudo nano /etc/systemd/system/unblock-wifi.service

Fügen Sie die folgenden Zeilen hinzu.

Description=RFKill Unblock WiFi DevicesRequires=wpa_supplicant.serviceAfter=wpa_supplicant.serviceType=oneshotExecStart=/usr/sbin/rfkill unblock wifiExecStop=RemainAfterExit=yesWantedBy=multi-user.target

Speichern und schließen Sie die Datei. Aktivieren Sie den Autostart beim Booten.

sudo systemctl enable unblock-wifi

Ich habe festgestellt, dass das unblock-wifi.service nach dem Start des wpa_supplicant.service laufen sollte, da es sonst das WLAN nicht entsperren kann. Beachten Sie, dass wenn Sie eine Desktop-Umgebung installiert haben, wahrscheinlich ein Netzwerkmanager läuft, der die Verbindung stören kann. Sie müssen ihn deaktivieren. Ich verwende zum Beispiel die leichtgewichtige LXQT-Desktop-Umgebung auf dem Raspberry Pi (sudo apt install lubuntu-desktop) und muss connman.service und NetworkManager.service deaktivieren.

sudo systemctl disable connman.service NetworkManager.service

Mehrere Wi-Fi-Netzwerke

Die /etc/wpa_supplicant.conf-Konfigurationsdatei kann mehrere Wi-Fi-Netzwerke enthalten. wpa_supplicant wählt automatisch das beste Netzwerk basierend auf der Reihenfolge der Netzwerkblöcke in der Konfigurationsdatei, der Netzwerksicherheitsstufe und der Signalstärke.

Um ein zweites Wi-Fi-Netzwerk hinzuzufügen, führen Sie

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf

Beachten Sie, dass Sie die Option -a mit dem Befehl tee verwenden müssen, der das neue Wifi-Netzwerk an die Datei anhängt, anstatt den ursprünglichen Inhalt zu löschen.

Wrapping Up

Ich hoffe, diese Anleitung hat Ihnen geholfen, Ubuntu 18.04/20.04 über die Kommandozeile mit dem WPA Supplicant mit einem Wi-Fi-Netzwerk zu verbinden. Wie immer, wenn Sie diesen Beitrag nützlich fanden, dann abonnieren Sie unseren kostenlosen Newsletter, um mehr Tipps und Tricks zu erhalten 🙂

Bewerten Sie dieses Tutorial

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.