Come connettersi e disconnettersi a una rete manualmente nel terminale?


113

Dal momento che il gestore della rete mi preoccupa così tanto che voglio sostituirlo (possibilmente wicdo NMda ppa: volanin ).

Non so come collegarmi e disconnettermi alla rete attraverso il terminale senza usare il gestore della rete.

Vorrei un modo da riga di comando per gestire la rete.


2
Se hai intenzione di fare confusione con la gestione della connessione di rete del tuo sistema, ti consiglio di farlo mentre sei connesso tramite Ethernet cablata, che ha meno probabilità di perdere la sua connessione e più facile da configurare dalla riga di comando, in caso di necessità.
Ryan Thompson,

Io uso wicd-curses, che trovo di gran lunga la più semplice interfaccia utente. È necessario utilizzare <kbd> → </kbd> (tasto freccia destra ->) per impostare le configurazioni; tutto il resto è ovvio dalle istruzioni sullo schermo.
isomorfismi

Risposte:


139

Questo vale per 12.04+ poiché sono quelli che ho potuto testare ma che potrebbero essere usati anche nelle versioni precedenti. Ho separato questa guida in più parti, che consistono in:

  • Parte 1 Router wireless senza password o chiave WEP
  • Parte 2 Router wireless con chiave di sicurezza WPA o WPA2
    • Parte 2.1 Connessione a un router WPA con wpa_supplicant
    • Parte 2.2 Connessione a un router WPA con Network Manager
  • Parte 3 Connessione facile tramite nmcli
  • Parte 4 Disconnessione da un router wireless
  • Parte 5 Eliminazione di una connessione (incluso il file di configurazione)
  • Parte 6 Connessione automatica all'accesso
  • Bonus Come trovare il nome dell'interfaccia di rete tramite la GUI

Le seguenti righe di comando possono essere utilizzate per connettersi e disconnettersi a seconda della scheda Wireless, della sicurezza wireless e delle impostazioni del router wireless. Prima di procedere, assicurarsi che il servizio di rete sia abilitato (per i casi in cui è possibile avviare Ubuntu utilizzando la modalità di ripristino):

A seconda della versione di Ubuntu, è necessario avviarla utilizzando uno dei seguenti modi:

Se si utilizza SystemD (dal 14.10 in poi):

sudo systemctl start networking

Se si utilizza il modo Legacy init.d: sudo /etc/init.d/networking restart

Se si utilizza il metodo Upstart legacy: sudo service network-manager restart

Parte 1: router wireless senza password o chiave WEP

Per i casi in cui il router wireless non ha password o sicurezza WEP, procedere come segue:

  1. Apri il terminale e cerca la connessione wireless:

    iwlist wlan0 s  
    

    (La s è per Scan. Wlan0 è la mia scheda wireless ma potrebbe essere diversa per ogni utente. Alcuni hanno eth0, altri wlan2 .. Devi sudoeseguire questa opzione. Per scoprire il nome della tua scheda wireless, digita semplicemente iwlist e premi TAB. Ciò dovrebbe completare automaticamente la riga con il nome della scheda di rete. Puoi anche digitare iwconfige trovare il nome nell'elenco che verrà mostrato.)

    Se non conosci il nome del tuo dispositivo wireless digita: iwconfigche ti mostrerà i tuoi dispositivi cablati / wireless e i loro nomi. Potrebbero essere qualcosa come wlan0, wlan1, eth1, eth2 ..

  2. La ricerca ti mostrerà tutti i possibili Access Point (AP) visibili a te. Dopo aver visto il tuo router nell'elenco, prova a connetterti ad esso:

    Se non ha una password, procedi come segue:

    iwconfig wlan0 essid NAME_OF_ACCESS_POINT  
    

    Per esempio

    iwconfig wlan0 essid CYREX  
    

    successivamente, assicurati di utilizzare in dhclientmodo da poter ottenere un IP dinamico nel caso in cui non ti venga assegnato uno dal router. Ciò dovrebbe lasciarti connesso al router CYREX.

    Se ha una password, allora fai:

    iwconfig wlan0 essid CYREX key PASSWORD
    

    Questo dovrebbe connettersi usando la PASSWORD che ci hai dato.

    Ancora una volta, dhclientdopo aver effettuato la connessione, assicurarsi di ottenere un IP assegnato.

  3. Accertarsi di essere collegati correttamente è sempre utile, quindi eseguire iwconfigper assicurarsi che la scheda wireless sia connessa all'SSID sopra menzionato. Dovrebbe mostrare il tuo dispositivo connesso e l'IP assegnato a te. In caso contrario e ti dà un errore come Interface non supporta la scansione, prova le seguenti 2 opzioni:

    • Verifica se l'interfaccia è attiva: sudo ifconfig wlan0 up
    • Prova ad aggiungere sudoquando esegui la scansione:sudo iwlist wlan0 s
    • Prova a portare il dispositivo verso il basso, quindi esegui il backup:

      sudo ifconfig wlan0 down  
      sudo ifconfig wlan0 up
      

Parte 2: router wireless con chiave di sicurezza WPA o WPA2

Per i casi in cui il router wireless ha una password WPA / WPA2 ci sono alcuni modi per farlo. Citerò i 2 più popolari:

  1. Apri il terminale e cerca la connessione wireless:

    iwlist wlan0 s  
    

    (La s è per Scan. Wlan0 è la mia scheda wireless ma potrebbe essere diversa per ogni utente. Alcuni hanno eth0, altri wlan2 .. Devi sudoeseguire questa opzione. Per scoprire il nome della tua scheda wireless, digita semplicemente iwlist e premi TAB. Ciò dovrebbe completare automaticamente la riga con il nome della scheda di rete. Puoi anche digitare iwconfige trovare il nome nell'elenco che verrà mostrato.)

    Se non conosci il nome del tuo dispositivo wireless digita: iwconfigche ti mostrerà i tuoi dispositivi cablati / wireless e i loro nomi. Potrebbero essere qualcosa come wlan0, wlan1, eth1, eth2 ..

  2. La ricerca ti mostrerà tutti i possibili Access Point (AP) visibili a te. Dopo aver visto il tuo router nell'elenco, prova a connetterti ad esso:

Parte 2.1 GUIDA AL FORNITORE WPA: Connessione a un router WPA con wpa_supplicant

  1. Digita quanto segue nel terminale (Supponendo che tu abbia wpasupplicantinstallato il pacchetto che installa tutti i comandi necessari che useremo qui):

    wpa_passphrase SSID PASSWORD > CONFIG_FILE
    

    Esempio: wpa_passphrase Virus LinuxFTW > wpa.conf

    Dove Virus è il nome del mio router, LinuxFTW è la mia password ed wpa.confè il file in cui voglio archiviare tutte queste informazioni. Nota che puoi salvare il file in un altro posto, molti utenti salvano il file /etc/wpa_supplicant.confinvece di wpa.conf. I dati del file wpa.conf dovrebbero essere qualcosa del genere:

    network={  
            ssid="Virus"  
            #psk="LinuxFTW"  
            psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
    }  
    
  2. Fino a questo punto, dovremmo conoscere il nome della nostra interfaccia della scheda wireless (ad esempio: Wlan0, eth2, Wlan2 ...). Ora dobbiamo sapere quale driver è in uso. per questo digitiamo:

    wpa_supplicant
    

    Dovrebbe mostrarci molte informazioni, ma ci sarà una sezione chiamata ** Driver * che mostra tutti i driver disponibili (questi sono disponibili durante la compilazione wpa_supplicant). Nel mio caso è così:

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

    L'intero elenco è hostap, hermes, madwifi, wext, broadcom, cablato, roboswitch, bsd, ndis. Questo può cambiare a seconda di come è wpa_supplicantstato compilato, ma quello che mostra per me dovrebbe essere simile a quello sul tuo sistema. La maggior parte degli utenti selezionerà il wextdriver.

  3. Quindi ora che abbiamo il nome della nostra scheda di interfaccia wireless e il nome del driver, procediamo a collegarci usando il file di configurazione già creato usando il seguente formato:

    wpa_supplicant -iINTERFACE_NAME -cCONFIGURATION_FILE -DDRIVER_NAME
    

    Per esempio:

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

    Dove si -itrova il nome della scheda di interfaccia, -cdove si trova il file di configurazione ed -Dè il nome del driver che verrà utilizzato per connettersi. Se si connette correttamente, quindi premiamo CTRL+ Cper annullarlo e quindi eseguiamo di nuovo la linea, ma questa volta lo inviamo in background in -Bmodo da poter continuare a utilizzare il terminale:

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

    Dopodiché fai semplicemente un sudo dhclient wlan0per ottenere un IP dal router.

  4. Alcuni utenti hanno segnalato la rimozione dell'Hash e di lasciare solo la password nella configurazione, ad esempio:

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

    Altri hanno aggiunto ssid_scan al file di configurazione:

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

    O anche aggiungendo il tipo di chiave:

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

    Maggiori informazioni al riguardo in man wpa_supplicant.conf

Parte 2.2 GUIDA DEL MANAGER DI RETE: Connessione a un router WPA con Network Manager

La cosa buona di Network Manager è che viene fornito con un paio di script e strumenti interessanti. Due di questi sono nmclie create_connection(Neat Python 3 script) che utilizzeremo in questo caso.

  1. Dopo aver eseguito i passaggi indicati in precedenza per trovare il nome SSID del router (ricordare la parte iwlistsopra) facciamo quanto segue:

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

    Laddove SECURITY è il tipo di sicurezza utilizzato dal router (WPA, WEP), PASSWORD è ... beh ... la password e SSID_NAME è il nome SSID del router. Per esempio:

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

    Creerà una connessione per Network Manager che dovrebbe assomigliare a questo:

      $ sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
      [sudo] password for cyrex: 
      Connection Virus registered
      Connection Virus activated.
    
  2. Successivamente, dovresti ottenere un IP assegnato dal router. In caso contrario, sudo dhclient wlan0(supponendo che wlan0 sia il nome dell'interfaccia). Puoi anche controllare le connessioni del tuo gestore di rete usando nmcli in questo modo: nmcli cche dovrebbe mostrare qualcosa del genere:

     $ 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   
    

Cito il modo del Network Manager perché ci sono un paio di casi in cui l'utilizzo wpa_supplicantsemplicemente non funziona (Problemi tra router e scheda wireless, problemi di sicurezza, ecc.). Nel mio caso, tutti i tentativi di utilizzo wpa_supplicantsu un PC non hanno funzionato, ma in un altro ha funzionato la prima volta che ho provato. Quindi sto pubblicando entrambi i metodi per aiutare su ogni caso e per rendere più facile agli utenti decidere quale vogliono.

Parte 3: Connessione facile tramite nmcli

Sebbene abbiamo parlato dei modi per connettersi ad esso senza un gestore di rete, c'è anche il caso di usare nmcli (versione CLI del gestore di rete) quando si applica. Per fare ciò, facciamo quanto segue:

  1. Controlla per vedere quale ESSID possiamo vedere:

    nmcli dev wifi
    
  2. Verifica il nome dell'ESSID e continuiamo a usarlo nella riga successiva, inclusa la password necessaria per esso (questo include le password di tipo WEP e WPA):

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD
    

    Ecco un esempio di me che mi connetto a ESSID Linux5G

    immagine dello schermo

    Se sul tuo computer sono presenti più dispositivi wireless, puoi specificare quale utilizzare utilizzando il ifnameparametro in questo modo:

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME

    Ad esempio nel mio caso il nome del dispositivo è wlp9s0quindi vorrei usare questa linea per specificare il dispositivo che userò per connettermi con:

    immagine dello schermo

Maggiori informazioni su nmcli possono essere ottenute utilizzando il parametro help. Ad esempio, se volessi sapere di nmcli devte, digitare nmcli dev help. Se volessi saperne di più nmcli dev wifi, dovresti scrivere nmcli dev wifi helpe così via.

Parte 4: disconnessione da un router wireless

Esistono diversi modi per ottenere questo risultato:

  • Disconnetti con "force": sudo ifconfig wlan0 down

    Ciò disattiva l'interfaccia della scheda wireless (il driver si spegne). Per attivare è sufficiente digitare ifconfig wlan0 upseguito da a sudo dhclient wlan0. Verrà comunque visualizzato come connesso se visualizzato da Network Manager ma in realtà non ci sarà alcuna connessione al router. Provare a pinglancerà un connect: Network is unreachableerrore.

  • Rilasciare l'IP DHCP: sudo dhclient -r wlan0

    Ricordati di fare sudo dhclient wlan0per assegnarti di nuovo un IP.

  • Disconnetti utilizzando Network Manager: nmcli nm enable false

    Dove nm è il parametro di nmcli che gestisce e imposta gli stati di Network Manager. L'opzione enablepuò essere vera o falsa , ovvero se impostata su falsa , tutte le connessioni di rete gestite da Network Manager verranno disconnesse. notare che nmcli non ha bisogno dei permessi di root.

Per vedere lo stato del tipo di Network Manager nmcli nm, dovrebbe mostrare qualcosa di simile a questo:

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

Un altro modo per attivare o disattivare la connessione (connessione / disconnessione) è la seguente:

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

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

Parte 5: eliminazione di una connessione

Eliminare una connessione esistente è abbastanza semplice. Primo tipo nel terminale:

nmcli c

Produrrà qualcosa del genere:

$ 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  

Ora diciamo che vogliamo eliminare Xcentral , quindi procediamo con il seguente comando:

nmcli c delete id Xcentral

Dopo averlo fatto dovrebbe apparire qualcosa del genere:

$ 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   

Tutte le connessioni sono memorizzate in /etc/NetworkManager/system-connections/

Se dovessi cercare in quella cartella in questo momento vedrei i seguenti file:

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

Questo è solo nel caso in cui desideri modificare / cancellare / aggiungere una connessione a mano.

Parte 6: Connessione automatica al momento del login

Per i casi in cui desideri accedere automaticamente a un router wireless, ecco i passaggi:

  1. Apri il interfacefile:

    sudo nano /etc/network/interfaces
    
  2. Aggiungi le seguenti informazioni (Supponendo che la tua interfaccia si chiami 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. Salvare il file e riavviare il computer. Si noti che questo verrà salvato su un file di testo semplice a cui è possibile accedere dallo stesso computer.

Bonus: trova il nome della tua connessione wireless Stile GUI

  1. Fai clic su Network Manager e vai a Informazioni sulla connessione

    immagine dello schermo

  2. Vai alla scheda che contiene la tua scheda wireless

    immagine dello schermo

In questa immagine, questa scheda di rete è denominata eth1 (all'interno della parentesi) ma può essere diversa per ogni utente. Normalmente sarebbe un wlan (come wlan0, wlan1, wlan2 ...) ma può anche essere eth1, eth2, ecc. Quindi devi vedere che nome ha.

Un altro modo per trovare rapidamente il nome è digitando iwconfigche mostrerà tutte le schede di rete wireless disponibili.


3
Se ho trovato un altro modo da riga di comando per trovare il nome dell'interfaccia wireless. dopo aver digitato iwlistpremere due volte tab e il terminale iwilst
digiterà

2
Potrei indovinare correttamente l'autore guardando la completezza della risposta.
Jobin

1
@douglaswalrath Useresti le virgolette, come in "Sugar Fairy"
Luis Alvarado,

Grazie per l'ampia guida! Mi chiedo se ci sono altri modi per collegarsi a una rete wireless all'avvio senza che la password sia scritta in chiaro in un file ... Hai qualche idea?
Michele,

1
@Michele questa altra risposta fornisce indicazioni su come impedire il salvataggio della password nella cronologia askubuntu.com/a/279333/237654
Hector Correa,

36

È abbastanza facile se sai come farlo.

Mostra i punti di accesso wlan disponibili:

nmcli dev wifi

Connettiti con il punto di accesso:

nmcli dev wifi connect $ACCESS_POINT password $PASSWORD

2
Questo è molto meglio della risposta votata da Alvarado, che non ha funzionato nel mio caso (Linux Mint 17.1). Ma questo è piuttosto semplice e FUNZIONA!
Thorben,

1
ha lavorato per me su Linux Mint 17
David Okwii,

Questa è la risposta vincente per me. Solo veloce, facile e sicuro. Grazie!.
GTRONICK,

3
@Thorben IMHO questa non è la risposta accettata, perché network manager command line interfacenon risponde alla domanda originale How to connect without a network manager.
Vorac,

+1 perché questa risposta, sebbene non applicabile alla domanda, aiuterebbe qualcuno in modalità di recupero e risparmierebbe tempo. Ottimo lavoro user82110.
Luis Alvarado,

13

wicd viene fornito con 2 utilità della riga di comando: wicd-curses e wicd-cli (potrebbero richiedere un'installazione separata) wicd-curse consente di configurare / connettere la disconnessione alle reti (cablata o wireless) in modo interattivo, wicd-cli offre la stessa funzionalità ma attraverso solo opzioni da riga di comando (utile per gli script) Lo uso in un processo cron per aggirare alcuni bug di autoreconnect:

wicd-cli -y -c -m MY_NETWORK_SSID

Inoltre puoi "solo" avere una configurazione di wpa_supplicant come:

/ etc / network / interface:

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

e (come esempio WPA) /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"
}

ci sono molte considerazioni a riguardo, di cui la preoccupazione di sicurezza di avere la chiave già condivisa in chiaro (wpa_supplicant può farti presentare una chiave crittografata o forse solo offuscata, controllare la pagina man), rendendo anche quel file di proprietà e leggibile solo per radice è una mitigazione.

Penso che avere diverse sezioni di rete consentirebbe di connettere più reti, in ordine di priorità.


wicd non è installato di default, non sono sicuro che sia compatibile con il gestore di rete.
Guntbert,

è incompatibile. Puoi seguire help.ubuntu.com/community/WICD
tr33hous

5

Io uso wicd-curses, che trovo di gran lunga la più semplice interfaccia utente.

wicd-curses

È necessario utilizzare il (tasto freccia destra ->) per impostare le configurazioni; tutto il resto è ovvio dalle istruzioni sullo schermo.

Ovviamente devi trovare un modo per accedere a Internet senza wicd; Suppongo che tu l'abbia già risolto, altrimenti non pubblicheresti.

(Questo non è tempestivo per il PO, ma solo per i posteri perché questa domanda è ancora su Google. Per i cercatori di google: se stai leggendo questo da un bar o dal computer di un amico o qualcosa del genere, forse puoi usare un filo da qualche parte per wicd-cursesinstallarlo sudo apt-get install wicd-curses; quindi assicurati di provarlo su una rete che è nota per funzionare prima di partire!)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.