从命令行连接/断开 VPN

Tim*_*ain 172 command-line network-manager vpn pptp vpnc

我在我的 Ubuntu 机器上设置了两个 VPN,一个使用 vpnc,一个使用 PPTP。这些都是使用 GNOME 网络管理器界面设置的,效果很好。但是,有时我需要远程访问这台机器 - 有没有办法从命令行连接或断开这些 VPN?

小智 268

如果您想从命令行与 NetworkManager 交互,您可以使用“nmcli”命令。

列出所有 NM 连接: nmcli con

开始连接(wifi、vpn 等): nmcli con up id ConnectionName

向下连接: nmcli con down id ConnectionName

(更多 nmcli 命令在nmcli 联机帮助页中)。


另请注意,普通用户通常无权控制网络。使用上面的命令sudo应该适用于大多数连接,但 VPN 可能会因“错误:连接激活失败:没有有效的 VPN 机密”而失败。

如果您遇到这种情况,则 VPN 密码很可能存储在您用户的 gnome-keyring 中,这使得 root 用户无法访问它。这条评论解释了原因。

要解决此问题,请编辑/etc/NetworkManager/system-connections/ConnectionName并在 下[vpn],将密码标志行更改为:

password-flags=0
Run Code Online (Sandbox Code Playgroud)

如果有一行以 开头Xauth password-flags,请改为更改它。

然后在[vpn]块下面添加以下内容:

[vpn-secrets]
password=YourPassword
Run Code Online (Sandbox Code Playgroud)

(如果在上一步中更改了 line Xauth password-flags,请改为添加Xauth password=...。)

现在通过以下方式重新启动网络管理器:

sudo service network-manager restart
Run Code Online (Sandbox Code Playgroud)

然后启动 VPN 连接sudo nmcli con up id ConnectionName应该没有问题。

  • 我希望有一个通用的断开命令,可以断开任何 VPN,而无需指定其 ID。这可能会使 [此功能](https://bugs.launchpad.net/ubuntu/+source/network-manager-vpnc/+bug/1215262)​​(我想要)更容易实现。 (2认同)
  • 明文密码??真的??有人有安全的解决方案吗? (2认同)

Joh*_*ohn 5

ihashacks的答案马特的意见为我工作......几乎。不得不调整一行。

我的密码标志行实际上是:“ Xauth password-flag”。在我更改为以下内容之前,接受的答案对我不起作用

[vpn]
...
Xauth password-flag=0
IPSec secret-flags=0

[vpn-secrets]
Xauth password=<my pw> ## This is the one I changed.
IPSec secret=<group pw>
Run Code Online (Sandbox Code Playgroud)

不知道为什么我的 VPN 连接Xauth在每次提到密码之前都有“ ”。

  • 这是针对某些类型的 VPN,例如 Cisco 的;对这些情况很有帮助!但是有一个错误:一个密钥的正确情况是“IPSec secret”——否则,NM 无法识别它。 (3认同)