How to connect and disconnect to a network manually in terminal?

383,015

Solution 1

This applies to 12.04+ since these are the ones I could test but could also be used in older versions. I have separated this guide into several parts, which consist of:

  • Part 1 Wireless Routers with no password or WEP Key
  • Part 2 Wireless Routers with WPA or WPA2 security Key
    • Part 2.1 Connecting to a WPA Router with wpa_supplicant
    • Part 2.2 Connecting to a WPA Router with Network Manager
  • Part 3 Easy Connection Via nmcli
  • Part 4 Disconnecting from a Wireless Router
  • Part 5 Deleting a Connection (Including Configuration File)
  • Part 6 Automatic connection when login in
  • Bonus How to find your network interface name via GUI

The following command lines can be used to connect and disconnect depending on the Wireless card, wireless security and wireless router settings. Before proceeding, make sure the network service is enabled (For cases where you might start Ubuntu using Recovery mode):

Depending on your Ubuntu Version, you would need to start it using one of the following way:

If using SystemD (since 14.10+):

sudo systemctl start networking

If using the Legacy init.d way: sudo /etc/init.d/networking restart

If using the Legacy Upstart way: sudo service network-manager restart

Part 1: Wireless Routers with no password or WEP Key

For cases where the wireless router has no password or WEP security, do the following:

  1. Open the terminal and lookup for the wireless connection:

    iwlist wlan0 s  
    

    (The s is for Scan. wlan0 is my wireless card but could be different for each user. Some have eth0, others wlan2.. You need sudo to execute this option.To find out the name of your wireless card simply type iwlist and press TAB. This should autocomplete the line with the network card's name. You can also type iwconfig and find the name on the list that will show.)

    If you do not know the name of your wireless devices type: iwconfig which will show you your wired/wireless devices and their names. They might be something like wlan0, wlan1, eth1, eth2..

  2. The lookup will show you all possible Access Points (AP) visible to you. After you see your router in the list try to connect to it:

    If it does not have a password do the following:

    iwconfig wlan0 essid NAME_OF_ACCESS_POINT  
    

    For example

    iwconfig wlan0 essid CYREX  
    

    after that, make sure to use dhclient so you can get a dynamic IP in case you don't get assigned one by the router. That should leave you connected to the CYREX router.

    If it has a password then do:

    iwconfig wlan0 essid CYREX key PASSWORD
    

    That should connect using the PASSWORD you gave there.

    Again, do dhclient after connecting to make sure you get an IP assigned.

  3. Making sure you are correctly connected is always good so execute iwconfig to make sure your wireless card is connected to the SSID you mentioned above. It should show your device connected and the IP assigned to you. If it does not and gives you an error like Interface doesn't support scanning try the following 2 options:

    • Test if your interface is UP: sudo ifconfig wlan0 up
    • Try adding sudo when doing the scan: sudo iwlist wlan0 s
    • Try bringing the device down and then back up:

      sudo ifconfig wlan0 down  
      sudo ifconfig wlan0 up
      

Part 2: Wireless Routers with WPA or WPA2 security Key

For cases where the wireless router has a WPA/WPA2 password there are a few ways of doing this. I will mention the 2 most popular ones::

  1. Open the terminal and lookup for the wireless connection:

    iwlist wlan0 s  
    

    (The s is for Scan. wlan0 is my wireless card but could be different for each user. Some have eth0, others wlan2.. You need sudo to execute this option. To find out the name of your wireless card simply type iwlist and press TAB. This should autocomplete the line with the network card's name. You can also type iwconfig and find the name on the list that will show.)

    If you do not know the name of your wireless devices type: iwconfig which will show you your wired/wireless devices and their names. They might be something like wlan0, wlan1, eth1, eth2..

  2. The lookup will show you all possible Access Points (AP) visible to you. After you see your router in the list try to connect to it:

Part 2.1 WPA-SUPPLICANT GUIDE: Connecting to a WPA Router with wpa_supplicant

  1. Type the following in the terminal (Assuming you have the wpasupplicant package installed which installs all the needed commands we will use here):

    wpa_passphrase SSID PASSWORD > CONFIG_FILE
    

    Example: wpa_passphrase Virus LinuxFTW > wpa.conf

    Where Virus is the name of my router,LinuxFTW is my password and wpa.conf is the file where I want to store all of this information in. Note that you can save the file in another place, many users save the file in /etc/wpa_supplicant.conf instead of wpa.conf. The data of the wpa.conf file should be something like this:

    network={  
            ssid="Virus"  
            #psk="LinuxFTW"  
            psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
    }  
    
  2. Up to this point, we should know the name of our wireless card interface (eg: Wlan0, eth2, Wlan2...). We now need to know which Driver is in use. for this we type:

    wpa_supplicant
    

    It should show us a lot of information, but there will be a section called **Drivers* which shows all available drivers (These are available when compiling wpa_supplicant). In my case it is like this:

    drivers:  
      wext = Linux wireless extensions (generic)  
      nl80211 = Linux nl80211/cfg80211  
      wired = Wired Ethernet driver  
      none = no driver (RADIUS server/WPS ER)  
    

    The whole list is hostap, hermes, madwifi, wext, broadcom, wired, roboswitch, bsd, ndis. This can change depending on how wpa_supplicant was compiled, but the one that shows for me should be similar to the one on your system. Most users will select the wext driver.

  3. So now that we have our wireless interface card name and the driver name, we proceed to connect to it using the already created configuration file using the following format:

    wpa_supplicant -iINTERFACE_NAME -cCONFIGURATION_FILE -DDRIVER_NAME
    

    For example:

    wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -Dwext
    

    Where -i is your interface card's name, -c is where your configuration file is and -D is the name of the driver you will be using to connect. If it connects correctly, then we press CTRL+C to cancel it and then execute the line again but this time we send it to the background with -B so we can continue to use the terminal:

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

    After that simply do a sudo dhclient wlan0 to get an IP from the router.

  4. Some users have reported removing the Hash and leaving only the password in the config, for example:

         network={  
                ssid="Virus"  
                psk="LinuxFTW"  
        }  
    

    Others have added the ssid_scan to the config file:

        network={  
                ssid="Virus"
                scan_ssid=1  
                #psk="LinuxFTW"  
                psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
        }  
    

    Or even adding the Key type:

        network={  
                ssid="Virus"
                scan_ssid=1  
                key_mgmt=WPA-PSK
                #psk="LinuxFTW"  
                psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
        }  
    

    More information about this in man wpa_supplicant.conf

Part 2.2 NETWORK MANAGER GUIDE: Connecting to a WPA Router with Network Manager

The good thing about network manager is that it comes with a couple of nice scripts and tools. Two of these are nmcli and create_connection (Neat Python 3 script) which we will use in this case.

  1. After doing the steps mentioned previously to find your router's SSID name (Remember the part about iwlist above) we do the following:

    sudo /usr/share/checkbox/scripts/create_connection -S SECURITY_TYPE -K PASSWORD SSID_NAME
    

    Where SECURITY is the type of security the Router uses (WPA, WEP), PASSWORD is.. well..the password and SSID_NAME is the SSID Name of the Router. For example:

    sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
    

    Will create a connection for Network Manager which should look something like this:

      $ sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
      [sudo] password for cyrex: 
      Connection Virus registered
      Connection Virus activated.
    
  2. After this, you should get an IP assigned from the router. If not simply do sudo dhclient wlan0 (Assuming wlan0 is the name of your interface). You can also check your network manager's connections using nmcli like this: nmcli c which should show something like this:

     $ nmcli c
      NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
      Xcentral                  f51a5a64-8a91-47d6-897c-28efcd84d2b0   802-11-wireless   Fri 22 Mar 2013 02:25:54 PM VET   
      Realtek                   9ded7740-ad29-4c8f-861f-84ec4da87f8d   802-3-ethernet    Tue 05 Mar 2013 01:18:31 AM VET   
      Intel                     e25b1fd8-c4ff-41ac-a6bc-22620296f01c   802-3-ethernet    Fri 05 Apr 2013 10:04:05 PM VET   
      Virus                     3f8ced55-507b-4558-a70b-0d260441f570   802-11-wireless   Tue 09 Apr 2013 06:31:10 AM VET   
    

I mention the Network Manager's way because there are a couple of cases where using wpa_supplicant will simply not work (Problems between router and wireless card, security issues, etc..). In my case, all attempts to use wpa_supplicant on one PC did not work, but in another it worked the first time I tried. So am posting both methods to help on each case and to make it easier for users to decide which one they want.

Part 3: Easy Connection via nmcli

Although we have talked about the ways to connect to it without a network manager, there is also the case of using nmcli (CLI version of the network manager) when it applies. To do this, we do the following:

  1. Check to see which ESSID we can see:

    nmcli dev wifi
    
  2. Verify the name of the ESSID and we proceed on using it on the next line including the password needed for it (This includes WEP and WPA type passwords):

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD
    

    Here is an example of me connecting to the ESSID Linux5G

    screenshot

    If you have multiple wireless devices on your computer, you can specify which one to use using the ifname parameter like so:

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME

    For example in my case the name of the device is wlp9s0 so I would use this line to specify the device that I will use to connect with:

    screenshot

More information about nmcli can be obtained by using the help parameter. For example if you wanted to know about about nmcli dev you would type nmcli dev help. If you wanted to know more about nmcli dev wifi, you would type nmcli dev wifi help and so on.

Part 4: Disconnecting from a Wireless Router

There are several ways of accomplishing this:

  • Disconnect by "force": sudo ifconfig wlan0 down

    This will turn your wireless card interface off (Driver turns off). To turn in on simply type ifconfig wlan0 up followed by a sudo dhclient wlan0. It will still show as connected if viewed by Network Manager but there will actually be no connection to the router. Trying to ping will throw an connect: Network is unreachable error.

  • Release the DHCP IP: sudo dhclient -r wlan0

    Remember to do sudo dhclient wlan0 to assign yourself an IP again.

  • Disconnect using Network Manager: nmcli nm enable false

    Where nm is the parameter of nmcli that manages and sets Network Manager's states. The option enable can be true or false, meaning if set to false, all network connections managed by Network Manager will be disconnected. note that nmcli does not need root permissions.

To see the status of Network Manager type nmcli nm, it should show something similar to this:

      $ nmcli nm
      RUNNING         STATE           WIFI-HARDWARE   WIFI       WWAN-HARDWARE   WWAN      
      running         connected       enabled         enabled    enabled         enabled   

Another way of turning the Connection On or Off (Connecting/Disconnecting) is by doing the following:

nmcli c down id NAME` - Will disconnect the connection NAME  

nmcli c up id NAME` - Will connect the connection NAME

Part 5: Deleting a Connection

To delete an existing connection is fairly easy. First type in the terminal:

nmcli c

It will output something like this:

$ nmcli c
NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
Realtek                   9ded7740-ad29-4c8f-861f-84ec4da87f8d   802-3-ethernet    Tue 05 Mar 2013 01:18:31 AM VET   
PrivateSys                86b2b37d-4835-44f1-ba95-46c4b747140f   802-11-wireless   Sun 21 Apr 2013 07:52:57 PM VET   
pepe                      9887664b-183a-45c0-a81f-27d5d0e6d9d8   802-11-wireless   Thu 18 Apr 2013 02:43:05 AM VET   
Virus                     3f8ced55-507b-4558-a70b-0d260441f570   802-11-wireless   Tue 16 Apr 2013 11:33:24 AM VET   
Intel                     e25b1fd8-c4ff-41ac-a6bc-22620296f01c   802-3-ethernet    Sun 21 Apr 2013 08:12:29 PM VET   
Xcentral                  f51a5a64-8a91-47d6-897c-28efcd84d2b0   802-11-wireless   Fri 22 Mar 2013 02:25:54 PM VET  

Now let us say we want to delete Xcentral, we then proceed with the following command:

nmcli c delete id Xcentral

After doing it should look something like this:

$ nmcli c delete id Xcentral
$ nmcli c
NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
Realtek                   9ded7740-ad29-4c8f-861f-84ec4da87f8d   802-3-ethernet    Tue 05 Mar 2013 01:18:31 AM VET   
PrivateSys                86b2b37d-4835-44f1-ba95-46c4b747140f   802-11-wireless   Sun 21 Apr 2013 07:52:57 PM VET   
pepe                      9887664b-183a-45c0-a81f-27d5d0e6d9d8   802-11-wireless   Thu 18 Apr 2013 02:43:05 AM VET   
Virus                     3f8ced55-507b-4558-a70b-0d260441f570   802-11-wireless   Tue 16 Apr 2013 11:33:24 AM VET   
Intel                     e25b1fd8-c4ff-41ac-a6bc-22620296f01c   802-3-ethernet    Sun 21 Apr 2013 08:12:29 PM VET   

All connections are stored in /etc/NetworkManager/system-connections/

If I were to look in that folder right now I would see the following files:

$ ls /etc/NetworkManager/system-connections
Intel  pepe  PrivateSys  Realtek  Virus

This is only in case you wish to edit/delete/add a connection by hand.

Part 6: Automatic connection when login in

For cases where you would like to login automatically to a wireless router here are the steps:

  1. Open the interface file:

    sudo nano /etc/network/interfaces
    
  2. Add the following information (Assuming your interface is called wlan0):

    auto wlan0
    iface wlan0 inet static
    address ASSIGNED_IP
    netmask 255.255.255.0
    gateway THE_GATEWAY
    wireless-essid YOURSSID
    wireless-key WIRELESSKEY_HERE
    
  3. Save the file and reboot computer. Note that this will be saved on a plain text file which can be accessed from the same computer.

Bonus: Find your wireless connection's name GUI Style

  1. Click on the Network Manager and go to Connection Information

    screenshot

  2. Go to the Tab that holds your wireless card

    screenshot

In this image, this network card is named eth1 (Inside the parenthesis) but this can be different for each user. Normally it would be a wlan (Like wlan0, wlan1, wlan2...) but it can also be eth1, eth2, etc.. So you need to see what name it has.

Another way to find the name quickly is by typing iwconfig which will show all the wireless network card available.

Solution 2

It's pretty easy if you know how to do it.

Show available wlan access points:

nmcli dev wifi

Connect with access point:

nmcli dev wifi connect $ACCESS_POINT password $PASSWORD

Solution 3

wicd comes with 2 command line utilities: wicd-curses and wicd-cli (they may require a separate install) wicd-curse lets you configure/connect disconnect to networks (wired or wireless) interactively, wicd-cli offers the same functionality but through command line options only (useful for scripts) I use it in a cron job to work around some autoreconnect bugs:

wicd-cli -y -c -m MY_NETWORK_SSID

Also you can "just" have a wpa_supplicant configuration something like:

/etc/network/interface :

auto wlan0 
iface wlan0 inet dhcp 
wpa-conf /etc/wpa.conf

and (as a WPA example) /etc/wpa.conf:

network={
  ssid="MY_NETWORK_SSID"
  proto=RSN
  key_mgmt=WPA_PSK
  pairwise=CCMP_TKIP
  group=CCMP_TKIP
  psk="my network key in the clear"
}

there are a lot of considerations to this, of which the security concern of having the preshared key in clear text (wpa_supplicant can let you present an encrypted or maybe just obfuscated key, check the man page), also making that file owned and readable only by root is a mitigation.

I think having several network sections would enable to connect several networks, by order of priority.

Solution 4

I use wicd-curses, which I find to be the easiest user interface by far.

wicd-curses

You need to use the (right arrow key ->) to set configurations; everything else is obvious from the on-screen instructions.

Of course you need to find some way of getting on the internet without wicd; I'm assuming you have already solved that or else you wouldn't be posting.

(This is not timely to the OP, just posting for posterity since this question still comes up on Google. To the google-seekers: if you're reading this from a café or friend's computer or something, maybe you can use a wire somewhere to get wicd-curses installed with sudo apt-get install wicd-curses; then make sure you test it out on a network that's known to work before leaving!)

Share:
383,015

Related videos on Youtube

user7048
Author by

user7048

Updated on September 17, 2022

Comments

  • user7048
    user7048 over 1 year

    Since the network manager is troubling me so much I want to replace it (possibly wicd orNM from ppa:volanin).

    I do not know how to connect and disconnect to the network through the terminal without using network manager.

    I would like a command-line way of managing the network.

    • Ryan C. Thompson
      Ryan C. Thompson almost 13 years
      If you are going to be messing with your system's network connection manager, I recommend that you do so while connected via wired ethernet, which is less likely to lose its connection, and easier to set up from the command line, should the need arise.
    • isomorphismes
      isomorphismes almost 9 years
      I use wicd-curses, which I find to be the easiest user interface by far. You need to use the <kbd>→</kbd> (right arrow key ->) to set configurations; everything else is obvious from the on-screen instructions.
  • guntbert
    guntbert almost 11 years
    wicd is not installed by default, not sure if it compatible with network manager.
  • tr33hous
    tr33hous about 10 years
    it;s incompatible. YOu can follow help.ubuntu.com/community/WICD
  • jobin
    jobin almost 10 years
    I could correctly guess the author looking at the completeness of the answer.
  • Luis Alvarado
    Luis Alvarado over 9 years
    @douglaswalrath You would use quotes, as in "sugar fairy"
  • Michele
    Michele over 9 years
    Thanks for the extensive guide! I wonder if there are other ways to link to a wireless on startup without having the password written in plain text in a file... Do you have any idea?
  • Luis Alvarado
    Luis Alvarado over 9 years
    I could think of a script that can only be executed by a specific user and that it grabs the password from an encrypted location that only the specific user could read, then stores the password on a temp environment variable which is then send as input to the wireless command, after connection is successful, the temp environment variable is removed. Am just thinking out loud about other methods.
  • Hector Correa
    Hector Correa over 9 years
    @Michele this other answer gives guidance on how to prevent the password from being saved on the history askubuntu.com/a/279333/237654
  • Thorben
    Thorben over 9 years
    This is far better than the up-voted answer from Alvarado, which did not work in my case (Linux Mint 17.1). But this is pretty simple and just WORKS!
  • David Okwii
    David Okwii about 9 years
    worked for me on Linux Mint 17
  • PHP Learner
    PHP Learner almost 9 years
    I followed the steps, but receive ioctl [SIOCSIWENCODEEXT] Invalid argument error when I run wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -Dwext -d
  • Luis Alvarado
    Luis Alvarado almost 9 years
    @PHPLearner Did you verify that the .conf file had the proper syntax. Typically that error means that the .conf file had something not correctly written in it.
  • Angelo
    Angelo over 8 years
    The initial use of wpa_supplicant produces an error for me--not the desired output for a config file.
  • ars
    ars over 7 years
    For those who, like me, searches for create_connection script in Ubuntu 14.04: it is no longer exists in checkbox package, but appears in plainbox-provider-checkbox package under /usr/lib/2013.com.canonical.certification:checkbox/bin/creat‌​e_connection
  • GTRONICK
    GTRONICK over 7 years
    This is the winning answer for me. Just quick, easy and secure. Thank you!.
  • Vorac
    Vorac about 7 years
    @Thorben IMHO this is not the accepted answer, because network manager command line interface doesn't answer the original question How to connect without a network manager.
  • Luis Alvarado
    Luis Alvarado almost 7 years
    +1 because this answer, although not applying to the question, would help someone when on recovery mode and save time. Excellent work user82110.
  • Eric
    Eric about 6 years
    Works perfectly on mint mate 18 !
  • Stefan Golubović
    Stefan Golubović over 4 years
    also works on Fedora 31!
  • The Thirsty Ape
    The Thirsty Ape almost 4 years
    For others like myself or @PHPLearner who have the ioctl[SIOCSIWENCODEEXT] error, I found that a reboot of my device solved that error. As soon as I rebooted I was connected to the network with an IP address assigned.