通过命令行从VPN连接/断开连接


131

我在Ubuntu机器上设置了两个VPN,一个使用vpnc,另一个使用PPTP。这些都是使用GNOME网络管理器界面设置的,并且运行良好。但是,有时我需要远程访问该计算机-是否可以通过命令行连接或断开这些VPN?


这里详细介绍的vpnc命令对您不起作用吗?此外,此处还提供了有关配置和连接到PPTP的说明他们不工作吗?
克里斯·哈珀

Answers:


191

如果要从命令行与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

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

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

[vpn-secrets]
password=YourPassword

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

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

sudo service network-manager restart

然后启动VPN连接sudo nmcli con up id ConnectionName应该可以正常工作。


1
我希望有一个通用的断开连接命令可以断开任何VPN,而无需指定其ID。这可能会使此功能(我想要)更易于实现。
Lonnie Best

如果您使用的是ipsec(例如vpnc),则可能还需要在其相应位置添加“ IPSec secret-flags = 0”和“ IPSec secret = <grouppw>”
Matt

这仍然不能解决问题:(我收到消息“错误:连接激活失败:未知原因。”
dano 2015年

我收回了...第三次运行命令后,它起作用了。第一次失败很快。第二次失败缓慢。第三次工作!
dano 2015年

2
清除文字密码?真??有人有安全解决方案吗?
user447607'9

4

ihashacks对Matt的评论的回答对我有用...几乎。不得不调整一行。

我的密码标志行实际显示为:“ Xauth密码标志”。除非我更改为以下内容,否则可接受的答案对我不起作用

[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>

在每次提及密码之前,不确定为什么我的vpn连接具有“ Xauth”。

(抱歉,这是一个新答案,尚无法发表评论。)


2
这适用于某些类型的VPN,例如Cisco。对于这些情况非常有帮助!不过,有一个错误:一个键的正确大小写是IPSec secret-否则,NM无法识别。
Marcus 2015年

谢谢Marcus,我已对我的答案进行了更正,因此没有人试图复制/粘贴错字。
约翰
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.