如何在终端中手动连接和断开网络?

use*_*048 125 command-line network-manager wireless

由于网络管理员非常困扰我,我想更换它(可能wicdNM来自ppa:volanin)。

我不知道如何在不使用网络管理器的情况下通过终端连接和断开网络。

我想要一种管理网络的命令行方式。

Lui*_*ado 159

这适用于 12.04+,因为这些是我可以测试但也可以在旧版本中使用的版本。我将本指南分为几个部分,其中包括:

  • 第 1 部分没有密码或 WEP 密钥的无线路由器
  • 第 2 部分带有 WPA 或 WPA2 安全密钥的无线路由器
    • 第 2.1 部分使用 wpa_supplicant 连接到 WPA 路由器
    • 第 2.2 部分使用网络管理器连接到 WPA 路由器
  • 第 3 部分通过 nmcli 轻松连接
  • 第 4 部分与无线路由器断开连接
  • 第 5 部分删除连接(包括配置文件)
  • Part 6登录时自动连接
  • 奖金如何通过 GUI 找到您的网络接口名称

以下命令行可用于连接和断开连接,具体取决于无线网卡、无线安全和无线路由器设置。在继续之前,请确保网络服务已启用(对于您可能使用恢复模式启动 Ubuntu 的情况):

根据您的 Ubuntu 版本,您需要使用以下方式之一启动它:

如果使用 SystemD(自 14.10+ 起):

sudo systemctl start networking
Run Code Online (Sandbox Code Playgroud)

如果使用 Legacy init.d 方式: sudo /etc/init.d/networking restart

如果使用 Legacy Upstart 方式: sudo service network-manager restart

第 1 部分:没有密码或 WEP 密钥的无线路由器

对于无线路由器没有密码或 WEP 安全性的情况,请执行以下操作:

  1. 打开终端并查找无线连接:

    iwlist wlan0 s  
    
    Run Code Online (Sandbox Code Playgroud)

    (该小号是扫描。为wlan0就是我的无线网卡,但可以为每个用户不同的。有些人的eth0,别人WLAN2 ..你需要sudo执行这个option.To找出你的无线网卡的名称,只需键入iwlist并按TAB。这应该会自动完成包含网卡名称的行。您也可以iwconfig在将显示的列表中键入并查找名称。)

    如果您不知道您的无线设备的名称,请键入:iwconfig这将显示您的有线/无线设备及其名称。它们可能类似于 wlan0、wlan1、eth1、eth2..

  2. 查找将显示您可见的所有可能的接入点 (AP)。在列表中看到您的路由器后,尝试连接到它:

    如果它没有密码,请执行以下操作:

    iwconfig wlan0 essid NAME_OF_ACCESS_POINT  
    
    Run Code Online (Sandbox Code Playgroud)

    例如

    iwconfig wlan0 essid CYREX  
    
    Run Code Online (Sandbox Code Playgroud)

    之后,请确保使用,dhclient以便您可以获得动态IP,以防路由器未分配给您。这应该让您连接到 CYREX 路由器。

    如果它有密码,请执行以下操作:

    iwconfig wlan0 essid CYREX key PASSWORD
    
    Run Code Online (Sandbox Code Playgroud)

    那应该使用您在那里提供的密码进行连接。

    同样,dhclient在连接后执行以确保您获得了分配的 IP。

  3. 确保您正确连接总是好的,因此请执行iwconfig以确保您的无线网卡连接到您上面提到的 SSID。它应该显示您的设备已连接以及分配给您的 IP。如果它没有并且给你一个错误,比如界面不支持扫描,请尝试以下两个选项:

    • 测试你的界面是否UP: sudo ifconfig wlan0 up
    • sudo在扫描时尝试添加:sudo iwlist wlan0 s
    • 尝试关闭设备然后重新启动:

      sudo ifconfig wlan0 down  
      sudo ifconfig wlan0 up
      
      Run Code Online (Sandbox Code Playgroud)

第 2 部分:具有 WPA 或 WPA2 安全密钥的无线路由器

对于无线路由器有 WPA/WPA2 密码的情况,有几种方法可以做到这一点。我会提到两个最受欢迎的:

  1. 打开终端并查找无线连接:

    iwlist wlan0 s  
    
    Run Code Online (Sandbox Code Playgroud)

    (该小号是扫描。为wlan0就是我的无线网卡,但可以为每个用户不同的。有些人的eth0,别人WLAN2 ..你需要sudo执行这个选项。要找出你的无线网卡的名称,只需键入iwlist并按TAB。这应该会自动完成包含网卡名称的行。您也可以iwconfig在将显示的列表中键入并查找名称。)

    如果您不知道您的无线设备的名称,请键入:iwconfig这将显示您的有线/无线设备及其名称。它们可能类似于 wlan0、wlan1、eth1、eth2..

  2. 查找将显示您可见的所有可能的接入点 (AP)。在列表中看到您的路由器后,尝试连接到它:

第 2.1 部分 WPA-SUPPLICANT 指南:使用 wpa_supplicant 连接到 WPA 路由器

  1. 在终端中输入以下内容(假设您已经wpasupplicant安装了安装我们将在此处使用的所有所需命令的软件包):

    wpa_passphrase SSID PASSWORD > CONFIG_FILE
    
    Run Code Online (Sandbox Code Playgroud)

    例子: wpa_passphrase Virus LinuxFTW > wpa.conf

    病毒是我的路由器的名字,LinuxFTW是我的密码,wpa.conf在这里我要保存所有的这些信息的文件。请注意,您可以将文件保存在另一个地方,很多用户保存文件/etc/wpa_supplicant.conf,而不是wpa.conf。wpa.conf 文件的数据应该是这样的:

    network={  
            ssid="Virus"  
            #psk="LinuxFTW"  
            psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
    }  
    
    Run Code Online (Sandbox Code Playgroud)
  2. 到此为止,我们应该知道我们的无线网卡接口的名称(例如:Wlan0、eth2、Wlan2...)。我们现在需要知道正在使用哪个驱动程序。为此,我们输入:

    wpa_supplicant
    
    Run Code Online (Sandbox Code Playgroud)

    它应该向我们展示很多信息,但是会有一个名为 **Drivers* 的部分显示所有可用的驱动程序(这些在编译时可用wpa_supplicant)。就我而言,它是这样的:

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

    整个列表是hostap、hermes、madwifi、wext、broadcom、wired、roboswitch、bsd、ndis。这可能会因wpa_supplicant编译方式而异,但显示给我的应该与您系统上的相似。大多数用户会选择wext驱动程序。

  3. 所以现在我们有了无线接口卡名称和驱动程序名称,我们继续使用已经创建的配置文件使用以下格式连接到它:

    wpa_supplicant -iINTERFACE_NAME -cCONFIGURATION_FILE -DDRIVER_NAME
    
    Run Code Online (Sandbox Code Playgroud)

    例如:

    wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -Dwext
    
    Run Code Online (Sandbox Code Playgroud)

    哪里-i是你的接口卡的名字,-c是你的配置文件是和-D是您将使用连接驱动程序的名称。如果它连接正确,那么我们按CTRL+C取消它,然后再次执行该行,但这次我们将其发送到后台,-B以便我们可以继续使用终端:

    wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext  
    
    Run Code Online (Sandbox Code Playgroud)

    之后,只需执行 asudo dhclient wlan0从路由器获取 IP。

  4. 一些用户报告说删除了哈希并只在配置中留下密码,例如:

         network={  
                ssid="Virus"  
                psk="LinuxFTW"  
        }  
    
    Run Code Online (Sandbox Code Playgroud)

    其他人已将 ssid_scan 添加到配置文件中:

        network={  
                ssid="Virus"
                scan_ssid=1  
                #psk="LinuxFTW"  
                psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
        }  
    
    Run Code Online (Sandbox Code Playgroud)

    甚至添加 Key 类型:

        network={  
                ssid="Virus"
                scan_ssid=1  
                key_mgmt=WPA-PSK
                #psk="LinuxFTW"  
                psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
        }  
    
    Run Code Online (Sandbox Code Playgroud)

    有关这方面的更多信息,请参见 man wpa_supplicant.conf

第 2.2 部分网络管理器指南:使用网络管理器连接到 WPA 路由器

网络管理器的好处在于它带有一些不错的脚本和工具。其中两个是nmclicreate_connection(Neat Python 3 脚本),我们将在本例中使用它们。

  1. 完成前面提到的步骤以找到路由器的 SSID 名称(记住iwlist上面的部分)后,我们执行以下操作:

    sudo /usr/share/checkbox/scripts/create_connection -S SECURITY_TYPE -K PASSWORD SSID_NAME
    
    Run Code Online (Sandbox Code Playgroud)

    其中SECURITY是路由器使用的安全类型(WPA、WEP),PASSWORD是……嗯……密码,SSID_NAME 是路由器的 SSID 名称。例如:

    sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
    
    Run Code Online (Sandbox Code Playgroud)

    将为网络管理器创建一个连接,它应该如下所示:

      $ sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
      [sudo] password for cyrex: 
      Connection Virus registered
      Connection Virus activated.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在此之后,您应该获得从路由器分配的 IP。如果不是简单地做sudo dhclient wlan0(假设 wlan0 是您的接口名称)。您还可以使用 nmcli 来检查您的网络管理器的连接,如下所示:nmcli c它应该显示如下内容:

     $ 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   
    
    Run Code Online (Sandbox Code Playgroud)

我提到网络管理器的方式是因为有几种情况 wpa_supplicant根本无法使用(路由器和无线网卡之间的问题、安全问题等)。在我的情况下,wpa_supplicant在一台 PC上使用的所有尝试都不起作用,但在另一台 PC 上它在我第一次尝试时就起作用了。因此,我发布了这两种方法来帮助解决每种情况,并使用户更容易决定他们想要哪种方法。

第 3 部分:通过 nmcli 轻松连接

虽然我们已经讲过不用网络管理器连接的方式,但也有使用nmcli(网络管理器的CLI版本)适用时的情况。为此,我们执行以下操作:

  1. 检查我们可以看到哪个 ESSID:

    nmcli dev wifi
    
    Run Code Online (Sandbox Code Playgroud)
  2. 验证 ESSID 的名称,我们继续在下一行使用它,包括它所需的密码(这包括 WEP 和 WPA 类型的密码):

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD
    
    Run Code Online (Sandbox Code Playgroud)

    这是我连接到 ESSID Linux5G 的示例

    截屏

    如果您的计算机上有多个无线设备,您可以使用ifname参数指定使用哪一个,如下所示:

    nmcli dev wifi 连接 ESSID_NAME 密码 ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME

    例如,在我的情况下,设备的名称是wlp9s0这样,我将使用此行来指定我将用于连接的设备:

    截屏

可以使用 help 参数获取有关 nmcli 的更多信息。例如,如果您想了解有关nmcli dev您的信息,请输入nmcli dev help. 如果您想了解更多关于nmcli dev wifi,您可以输入nmcli dev wifi help等等。

第 4 部分:断开与无线路由器的连接

有几种方法可以实现这一点:

  • 通过“强制”断开连接: sudo ifconfig wlan0 down

    这将关闭您的无线网卡接口(驱动程序关闭)。要打开,只需键入ifconfig wlan0 up后跟一个sudo dhclient wlan0. 如果通过网络管理器查看,它仍将显示为已连接,但实际上与路由器没有连接。尝试ping会抛出connect: Network is unreachable错误。

  • 释放 DHCP IP: sudo dhclient -r wlan0

    记得sudo dhclient wlan0再给自己分配一个IP。

  • 使用网络管理器断开连接: nmcli nm enable false

    其中 nm 是 nmcli 的参数,用于管理和设置网络管理器的状态。该选项enable可以是truefalse,这意味着如果设置为false,则网络管理器管理的所有网络连接都将断开。请注意, nmcli 不需要 root 权限。

要查看 Network Manager type 的状态nmcli nm,它应该显示类似于以下内容:

      $ nmcli nm
      RUNNING         STATE           WIFI-HARDWARE   WIFI       WWAN-HARDWARE   WWAN      
      running         connected       enabled         enabled    enabled         enabled   
Run Code Online (Sandbox Code Playgroud)

打开或关闭连接(连接/断开连接)的另一种方法是执行以下操作:

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

nmcli c up id NAME` - Will connect the connection NAME
Run Code Online (Sandbox Code Playgroud)

第 5 部分:删除连接

删除现有连接相当容易。首先在终端输入:

nmcli c
Run Code Online (Sandbox Code Playgroud)

它将输出如下内容:

$ 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  
Run Code Online (Sandbox Code Playgroud)

现在让我们说我们要删除Xcentral,然后我们继续执行以下命令:

nmcli c delete id Xcentral
Run Code Online (Sandbox Code Playgroud)

完成后应该看起来像这样:

$ 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   
Run Code Online (Sandbox Code Playgroud)

所有连接都存储在 /etc/NetworkManager/system-connections/

如果我现在查看该文件夹,我会看到以下文件:

$ ls /etc/NetworkManager/system-connections
Intel  pepe  PrivateSys  Realtek  Virus
Run Code Online (Sandbox Code Playgroud)

这仅适用于您希望手动编辑/删除/添加连接的情况。

第 6 部分:登录时自动连接

如果您想自动登录无线路由器,请按以下步骤操作:

  1. 打开interface文件:

    sudo nano /etc/network/interfaces
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加以下信息(假设您的接口名为 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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存文件并重新启动计算机。请注意,这将保存在可以从同一台计算机访问的纯文本文件中。

奖励:找到您的无线连接名称 GUI 样式

  1. 单击网络管理器并转到连接信息

    截屏

  2. 转到包含您的无线网卡的选项卡

    截屏

在此图中,此网卡名为eth1(在括号内),但每个用户的名称可能不同。通常它是一个 wlan(比如 wlan0、wlan1、wlan2...)但它也可以是 eth1、eth2 等等。所以你需要看看它有什么名字。

另一种快速查找名称的方法是键入iwconfig将显示所有可用的无线网卡。

  • 如果找到了另一种命令行方式来查找无线接口的名称。输入 `iwlist` 后按两次 Tab 键,终端会自动在 `iwilst` 后面输入界面名称 (3认同)
  • 我可以正确地猜测作者在看答案的完整性。 (2认同)

Ike*_*ger 39

如果你知道怎么做,这很容易。

显示可用的无线接入点:

nmcli dev wifi
Run Code Online (Sandbox Code Playgroud)

连接接入点:

nmcli dev wifi connect $ACCESS_POINT password $PASSWORD
Run Code Online (Sandbox Code Playgroud)

  • @Thorben 恕我直言,这不是公认的答案,因为“网络管理器命令行界面”没有回答原始问题“如何在没有网络管理器的情况下进行连接”。 (4认同)
  • 这比 Alvarado 的投票答案要好得多,后者在我的情况下不起作用(Linux Mint 17.1)。但这很简单,而且很有效! (2认同)
  • +1,因为这个答案虽然不适用于问题,但会在恢复模式下帮助某人并节省时间。优秀的工作用户82110。 (2认同)

小智 13

wicd 带有 2 个命令行实用程序:wicd-curses 和 wicd-cli(它们可能需要单独安装) wicd-curse 允许您以交互方式配置/连接断开网络(有线或无线),wicd-cli 提供相同的功能,但通过仅命令行选项(对脚本有用)我在 cron 作业中使用它来解决一些自动重新连接错误:

wicd-cli -y -c -m MY_NETWORK_SSID
Run Code Online (Sandbox Code Playgroud)

你也可以“只是”有一个 wpa_supplicant 配置,比如:

/etc/网络/接口:

auto wlan0 
iface wlan0 inet dhcp 
wpa-conf /etc/wpa.conf
Run Code Online (Sandbox Code Playgroud)

和(作为 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"
}
Run Code Online (Sandbox Code Playgroud)

对此有很多考虑,其中以明文形式拥有预共享密钥的安全问题(wpa_supplicant 可以让您提供加密的或可能只是混淆的密钥,请查看手册页),也使该文件成为拥有和可读的唯一根是一种缓解。

认为有多个网络部分可以按优先级顺序连接多个网络。


iso*_*mes 5

我使用wicd-curses,我发现它是迄今为止最简单的用户界面。

邪恶的诅咒

您需要使用?(右箭头键->)来设置配置;其他一切都从屏幕上的说明中显而易见。

当然,您需要找到某种无需上网的方式wicd;我假设你已经解决了这个问题,否则你就不会发帖了。

(这对 OP 来说不及时,只是发布给后代,因为这个问题仍然出现在谷歌上。对于谷歌搜索者:如果你是从咖啡馆或朋友的电脑或其他地方读到的,也许你可以在某处使用电线获得wicd-curses安装了sudo apt-get install wicd-curses,那么要确保测试的是上已知的工作临行前在网络上)!