问题描述
我在我的Ubuntu机器上安装了两个VPN,一个使用vpnc,一个使用PPTP。这些都是使用GNOME网络管理器界面设置的,并且效果很好。但有时我需要远程访问本机 – 是否有方法从命令行连接或断开这些VPN?
最佳解决方案
如果要通过命令行与NetworkManager交互,可以使用”nmcli”命令。
列出所有的NM连接:nmcli con
开始连接(wifi,vpn等):nmcli con up id ConnectionName
向下连接:nmcli con down id ConnectionName
(nmcli manpage中的nmcli命令更多)。
另请注意,普通用户通常没有权限控制网络。在sudo
上使用上述命令应该适用于大多数连接,但VPN可能会因“错误:连接激活失败:没有有效的VPN机密”而失败。
如果这种情况发生在您身上,可能是因为VPN密码存储在用户的gnome-keyring中,这使得root用户无法访问该密码。 This comment解释了原因。
要解决此问题,请编辑/etc /NetworkManager /system-connections /ConnectionName,并在[vpn]
下将password flags行更改为:
password-flags=0
并添加以下内容:
[vpn-secrets]
password=YourPassword
现在重新启动网络管理器:
sudo service network-manager restart
然后,启动与sudo nmcli con up id ConnectionName
的VPN连接应该没有问题。
次佳解决方案
ihashacks对Matt的评论的回答对我来说几乎是一样的。必须调整一行。
我的password-flag行实际上是这样读的:“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”。
(对不起,这是一个新的答案,还不能发表评论。)