
How to Connect Wifi From Terminal? Quick Connection Help
Introduction Knowing How to Connect Wifi From Terminal? can save time in many situations where a graphical interface is unavailable, slow, or broken. Whether you are troubleshooting a headless server, working on a minimal Linux install, repairing a desktop wit
Introduction
Knowing How to Connect Wifi From Terminal? can save time in many situations where a graphical interface is unavailable, slow, or broken. Whether you are troubleshooting a headless server, working on a minimal Linux install, repairing a desktop without a network manager applet, or simply prefer using the command line for speed and control, connecting to a wireless network through the terminal is a practical skill to have.
This guide walks through safe, reliable, and widely supported methods for connecting to Wi-Fi from a terminal across common Linux distributions and network tools. It also covers checking interfaces, scanning networks, handling security types, troubleshooting connection failures, and secure practices. By the end, you will be able to connect to nearly any wireless network using only your shell with confidence.
Table of Contents
- What to Know Before You Begin
- Check Your Wireless Interface
- Scan for Available Wi-Fi Networks
- Method 1: Use nmcli (NetworkManager CLI)
- Method 2: Use wpa_supplicant with a Config File
- Method 3: Use iwctl (iwd)
- Method 4: Use netctl (Arch-based Minimal Setups)
- Connecting to Hidden Wi-Fi Networks
- Managing Saved Connections
- Comparison of Terminal Wi-Fi Methods
- Troubleshooting Common Issues
- Security Tips and Best Practices
- Frequently Asked Questions
- Conclusion
What to Know Before You Begin
Before attempting to connect, a few checks will prevent most errors. The exact tools available depend on your setup, but the core requirements are the same across most systems.
Requirements
- Wireless hardware: A working Wi-Fi adapter detected by the kernel.
- Terminal access: A shell such as
bash,zsh, orfish. - Proper permissions: Most of these commands require
rootprivileges. Usesudowhere needed. - Network details: Know the SSID (network name), and the password or key for WPA/WPA2/WPA3 networks.
- Installed tools: Depending on your method, you may need
nmcli,wpa_supplicant,iw,iwd,ip, ornetctl.
Key Terms to Understand
- SSID: The human-readable name of the wireless network.
- Interface: The name of your wireless adapter (e.g.,
wlan0,wlp2s0,wlo1). - BSSID: The unique MAC address of a specific access point.
- PSK: Pre-shared key, used by WPA/WPA2-Personal networks.
- DHCP: Automatically assigns an IP address after connecting.
With these basics in mind, the most reliable way to answer How to Connect Wifi From Terminal? is to match the method to the tools already present on your system.
Check Your Wireless Interface
The first step is to identify which wireless interface your system is using. Network tools will not work if you use the wrong name.
Using ip
Open your terminal and run:
ip link
Look for an entry that starts with w, such as wlan0, wlp3s0, or wlo1. The UP or DOWN state will appear next to it. If it is DOWN, it may still be usable for scanning and connecting.
Using iw
Another precise way is:
iw dev
This will list all wireless devices along with their interface names and supported modes. This is especially useful on systems where ip output is less explicit.
Bring the interface up if needed
If your interface is down, bring it up with:
sudo ip link set <your-interface> up
Replace <your-interface> with the exact name you found.
Scan for Available Wi-Fi Networks
To see nearby networks, you need to scan. This helps you verify the SSID, security type, and signal strength before connecting.
Using nmcli
nmcli device wifi list
This will display a table with columns like SSID, MODE, CHAN, RATE, SIGNAL, BARS, and SECURITY.
Using iw
sudo iw dev <your-interface> scan | grep -E "SSID|signal|security"
This gives a more detailed raw view. It is very reliable on minimal systems where NetworkManager is not installed.
Using iwctl
If using iwd:
iwctl station <your-interface> scan
iwctl station <your-interface> get-networks
Scanning and listing are separate steps in iwd, which helps avoid redundant scans.
Method 1: Use nmcli (NetworkManager CLI)
nmcli is one of the most common and user-friendly ways to connect from the terminal. It is used by many desktop distributions and works well for WPA/WPA2/WPA3-Personal networks. If you have NetworkManager running, this is often the quickest route for answering How to Connect Wifi From Terminal?.
Check NetworkManager status
nmcli general status
If it shows running, you are good to go.
Connect to a visible network
nmcli device wifi connect "YOUR_SSID" password "YOUR_PASSWORD"
Quotes are important if your SSID or password has spaces.
Connect to a specific access point by BSSID
If multiple access points share the same SSID, you can be more specific:
nmcli device wifi connect "YOUR_SSID" password "YOUR_PASSWORD" bssid AA:BB:CC:DD:EE:FF
Verify the connection
nmcli connection show --active
nmcli device status
You should see your wireless interface with connected and an active connection name.
Notes on nmcli
- Connections are saved automatically and can reconnect on boot or when in range.
- It handles DHCP without extra steps on most setups.
- Works well for enterprise-like flows only if already configured, but is best for personal networks.
Method 2: Use wpa_supplicant with a Config File
wpa_supplicant is a low-level, reliable tool present on nearly all Linux systems. It gives maximum control and is ideal for minimal installs, live environments, or systems without NetworkManager. This method takes a few more steps, but is extremely robust.
Install check
Most systems have it, but just in case you can check for wpa_supplicant and wpa_passphrase.
Step 1: Generate the configuration
Create a secure config for your network. Avoid writing plain passwords to loose files unnecessarily.
wpa_passphrase "YOUR_SSID" "YOUR_PASSWORD" | sudo tee /etc/wpa_supplicant/wpa_supplicant-<your-interface>.conf > /dev/null
This uses wpa_passphrase to hash the PSK instead of storing the raw password in plain form where possible.
Step 2: Secure the config file
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant-<your-interface>.conf
This restricts read/write access to only the root user.
Step 3: Start wpa_supplicant
sudo wpa_supplicant -B -i <your-interface> -c /etc/wpa_supplicant/wpa_supplicant-<your-interface>.conf
-B: Runs in the background.-i: Specifies the interface.-c: Points to the config file.
You can check for errors by omitting -B for a moment if something fails.
Step 4: Obtain an IP address with DHCP
After authentication, request an IP:
sudo dhclient <your-interface>
Or on many modern systems:
sudo dhcpcd <your-interface>
Use whichever DHCP client is present on your system.
Step 5: Verify
ip addr show <your-interface>
ping -c 4 1.1.1.1
A successful ping confirms internet connectivity.
Notes on wpa_supplicant
- Great for headless and minimal environments.
- Does not manage multiple profiles as visually as NetworkManager, but you can maintain multiple config entries.
- Must be started manually unless you set up a service.
Method 3: Use iwctl (iwd)
iwd is a modern, lightweight wireless daemon. Its CLI tool, iwctl, is clean and intuitive. Many minimal distributions now use iwd in place of heavier stacks. If present, this is an excellent way to handle How to Connect Wifi From Terminal? with very few commands.
Check if iwd is running
systemctl status iwd
If not active, start and enable it if desired:
sudo systemctl start iwd
Enter the interactive prompt
iwctl
Most commands below are run from inside iwctl>. You can also run them directly from your shell by prefixing, but the interactive mode is clearer.
List devices
device list
Find your wireless device name, usually wlan0.
Scan and view networks
station wlan0 scan
station wlan0 get-networks
Connect to a network
station wlan0 connect "YOUR_SSID"
If the network is secured, iwctl will prompt for the passphrase. Enter it when asked.
Exit and verify
Type exit to leave iwctl, then check connectivity:
ip addr show wlan0
ping -c 4 1.1.1.1
Notes on iwd
- Fast and minimal with sensible defaults.
- Stores known networks securely.
- Often paired with
systemd-networkdor its built-in DHCP handling depending on configuration.
Method 4: Use netctl (Arch-based Minimal Setups)
On some Arch-based systems without NetworkManager or iwd, netctl is used with wpa_supplicant profiles. It is profile-driven and great for fixed network setups.
Copy a profile template
sudo cp /etc/netctl/examples/wireless-wpa /etc/netctl/YOUR_PROFILE_NAME
Edit the profile
sudo nano /etc/netctl/YOUR_PROFILE_NAME
Update the following values:
Interface=– your wireless interfaceESSID=– your network nameKey=– your password
Most defaults for DHCP are already set. Save and exit.
Start and enable the profile
sudo netctl start YOUR_PROFILE_NAME
sudo netctl enable YOUR_PROFILE_NAME
Enabling will auto-connect on future boots.
Verify
netctl list
ping -c 4 1.1.1.1
The active profile will be marked with an asterisk.
Connecting to Hidden Wi-Fi Networks
A hidden network does not broadcast its SSID. Scanning may not show it by name, but you can still connect if you know the exact SSID and security details.
With nmcli
nmcli device wifi connect "YOUR_HIDDEN_SSID" password "YOUR_PASSWORD" hidden yes
With wpa_supplicant
Edit your wpa_supplicant config manually or use wpa_passphrase, then add scan_ssid=1 to the network block:
network={
ssid="YOUR_HIDDEN_SSID"
#psk will be generated or added
psk=...
scan_ssid=1
key_mgmt=WPA-PSK
}
Then start wpa_supplicant and get an IP as shown earlier.
With iwctl
station wlan0 connect-hidden "YOUR_HIDDEN_SSID"
You will be prompted for the passphrase. This is the cleanest way with iwd.
Take extra care with hidden networks: only connect when necessary, as relying on hidden SSIDs is not a strong security measure by itself.
Managing Saved Connections
Once you know How to Connect Wifi From Terminal?, managing saved profiles is just as important for switching networks or cleaning up old ones.
Using nmcli
- List saved:
nmcli connection show - Bring up saved:
nmcli connection up "CONNECTION_NAME" - Bring down:
nmcli connection down "CONNECTION_NAME" - Delete:
nmcli connection delete "CONNECTION_NAME"
Using iwctl
- List known:
known-networks list - Forget a network:
known-networks "YOUR_SSID" forget
Using wpa_supplicant
There is no single global list command beyond the config file. To remove a network, edit /etc/wpa_supplicant/*.conf and delete its network={ ... } block, then restart wpa_supplicant.
Using netctl
- List:
netctl list - Stop:
sudo netctl stop YOUR_PROFILE_NAME - Disable:
sudo netctl disable YOUR_PROFILE_NAME - Remove profile: delete the file from
/etc/netctl/
Comparison of Terminal Wi-Fi Methods
Use this table to quickly pick the right approach for your system.
| Feature | nmcli | wpa_supplicant | iwctl (iwd) | netctl |
|---|---|---|---|---|
| Ease of use | Very easy | Moderate to advanced | Very easy | Moderate |
| Presence on distros | Very common with NetworkManager | Nearly universal | Growing on minimal distros | Mainly Arch-based |
| Saves profiles | Yes, automatic | Manual via config | Yes, automatic | Yes, per profile file |
| Hidden networks | Supported with flag | Supported with scan_ssid | Supported directly | Supported in profile |
| Needs extra DHCP | Usually handled | Yes, use dhclient/dhcpcd | Often handled or needs networkd | Handled by netctl |
| Best for minimal/headless | Good if present | Excellent | Excellent | Good |
| Low resource use | Moderate | Light | Very light | Light |
Troubleshooting Common Issues
Even when following the correct steps for How to Connect Wifi From Terminal?, issues can come up. Work through these checks in order.
Interface not showing up
- Check rfkill:
rfkill list all. If blocked, unblock withsudo rfkill unblock wifi. - Kernel modules: Ensure your Wi-Fi driver is loaded. Check
lsmod | grep -E "iwl|ath|rtw|brcm"for common ones. - Hardware switch: Some laptops have a physical Wi-Fi toggle.
Cannot scan networks
- Bring up interface:
sudo ip link set <your-interface> up - Check permissions: Scanning often needs root with
iw. - Regulatory domain: Rarely, region settings limit channels. Usually not an issue.
Authentication fails
- Verify password: Re-check case sensitivity and special characters.
- Check security type: Use the correct method for WPA/WPA2/WPA3-Personal.
- Try BSSID: With nmcli, connecting by BSSID can help with roaming issues.
- Config check: For wpa_supplicant, ensure
key_mgmt=WPA-PSKmatches the network.
Connected but no internet
- Get IP: Run
ip addr show <your-interface>. If noinetaddress, run your DHCP client again. - Check gateway:
ip route showshould show a default route via your router. - Test DNS: Try
nslookup google.comordig google.com. If DNS fails but IP works, update resolv config. - Ping test:
ping -c 4 8.8.8.8bypasses DNS.ping -c 4 google.comtests DNS.
nmcli says “device not managed”
- Check NetworkManager: Ensure
NetworkManagerservice is running:sudo systemctl status NetworkManager - Unmanaged interfaces: Some setups mark interfaces as unmanaged. Check
/etc/NetworkManager/NetworkManager.confor disable conflicting services.
iwctl fails to connect
- Verify adapter state: In
iwctl,device listshould showpowered: on. - Restart iwd:
sudo systemctl restart iwd - Use station properly: Ensure you use the exact station name for your interface.
Security Tips and Best Practices
Connecting from the terminal is efficient, but it is worth following a few precautions to keep your connection secure.
Protect credentials
- Use hashed PSKs: Prefer
wpa_passphraseover writing raw passwords in readable scripts. - Restrict file permissions: Any config file holding keys should be readable only by root (
chmod 600). - Avoid shell history leaks: Be careful pasting passwords in plain form. If you must, consider clearing history or using tools that prompt securely.
Use safer networks
- Prefer trusted networks: Public Wi-Fi comes with risks. Avoid sensitive logins when possible.
- Use strong keys: For personal hotspots, use a long, unique passphrase.
- Keep systems updated: Updates patch Wi-Fi driver and supplicant vulnerabilities.
Operational tips
- Document interface names: Interface names can change between boots on some systems. Using consistent naming helps.
- Disable unused services: If you use
wpa_supplicantdirectly, avoid running multiple network managers at the same time. - Test in a safe session: When experimenting in a remote or headless session, have a fallback plan in case you lose connectivity.
- Know your method: Pick one stable method for your daily use instead of mixing conflicting ones.
Frequently Asked Questions
Is it possible to connect to Wi-Fi from terminal without any GUI at all?
Yes. Using wpa_supplicant with dhclient or dhcpcd, or using iwctl with a compatible setup, allows full Wi-Fi connection on a pure terminal system with no desktop environment.
Which method is best for most Linux users?
If NetworkManager is installed, nmcli is the most balanced option. It is clear, reliable, and handles saving and reconnecting with minimal effort.
Can I connect to WPA3 networks from the terminal?
In most up-to-date systems, yes. nmcli, modern wpa_supplicant, and iwd all support WPA3-Personal on supported hardware and drivers. Very old supplicant versions may lack full WPA3 support.
Why does my connection drop after a while?
Common causes include weak signal, power management, roaming between access points, or conflicts between network services. Try disabling Wi-Fi power saving with iw on some adapters, or ensure only one network manager is active.
Do I need root for all of these?
For scanning, bringing interfaces up, authenticating, and requesting IPs, yes. Most of these operations require elevated privileges. Using sudo is standard practice.
How can I find which tool is already on my system?
Run quick checks:
which nmcli 2>/dev/nullwhich iwctl 2>/dev/nullwhich wpa_supplicant 2>/dev/nullwhich netctl 2>/dev/null
Whichever returns a path is likely available.
Is it safe to store passwords in terminal history?
It is not ideal. If you pass a password directly in a command like nmcli ... password "...", it can be logged to shell history in some shells. For better safety, use tools that prompt interactively (like iwctl) or store hashed values via wpa_passphrase.
Conclusion
Learning How to Connect Wifi From Terminal? is a versatile skill that pays off in troubleshooting, recovery, and minimal environments. For most users, nmcli is the fastest path. For headless or stripped-down systems, wpa_supplicant is unmatched in compatibility. For a modern lightweight feel, iwctl is hard to beat. For profile-based Arch setups, netctl remains solid.
The key is to identify your wireless interface, scan for networks, pick the method that matches your installed tools, and verify with a simple ping. With the steps, tables, and troubleshooting advice above, you can confidently connect to any supported Wi-Fi network directly from your terminal without relying on a graphical network applet.