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

评论

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

#1 楼

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


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

评论


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

–Lonnie Best
2014年7月6日23:15



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

–马特
2014年11月3日,0:01

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

–达诺
2015年3月8日,下午5:12

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

–达诺
2015年3月8日,下午5:14

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

–user447607
16年9月2日在15:24

#2 楼

ihashacks的回答和Matt的评论对我有用...几乎。必须调整一行。

我的密码标志行实际显示为:“ 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>


在每次提及密码之前不确定为什么我的vpn连接具有“ Xauth”。 />
(对不起,这是一个新答案,尚无法发表评论。)

评论


这适用于某些类型的VPN,例如Cisco。对于这些情况非常有帮助!但是,有一个错误:一个密钥的正确情况是IPSec机密-否则,NM无法识别它。

–马库斯
2015年9月15日18:00



谢谢Marcus,我已对我的答案进行了更正,因此没有人试图复制/粘贴错字。

–约翰
15年9月16日在17:38