从命令行连接/断开VPN

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

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

列出所有NM连接: nmcli con

启动连接(wifi,vpn等): nmcli con up id ConnectionName

down connection: 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 

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

ihashacks回答Matt的评论对我有用……差不多。 不得不调整一行。

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

 [vpn] ... Xauth password-flag=0 IPSec secret-flags=0 [vpn-secrets] Xauth password= ## This is the one I changed. IPSec secret= 

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

(对不起,这是一个新的答案,还不能发表评论。)