从命令行将 VPN 配置文件导入 NetworkManager

pet*_*hka 16 command-line networkmanager vpn openvpn nmcli

可以.ovpn通过 GUI 工具将文件导入NetworkManager nm-connection-editor(右键单击nm-applet并单击Edit connections):Add-> Import a saved VPN configuration...

我的目标是做同样的事情,但通过命令行使用nm-cli. 有可能吗?

bas*_*ian 14

我使用的是 nmcli 版本 1.2.6,我可以用它来导入 openvpn 配置。

nmcli connection import type openvpn file ~/myconfig.ovpn
Run Code Online (Sandbox Code Playgroud)

从现在开始,即使在 NetworkManager UI 中,我的 vpn 也是可见的。

要进一步配置连接,您可以使用该show命令找出连接名称并modify更改配置值。

nmcli connection show
nmcli connection modify myvpnconnectionname +vpn.data username=myusername
Run Code Online (Sandbox Code Playgroud)


Fuz*_*sis 6

我用来解决基于 debian 的系统上 nmcli 缺乏功能的解决方法是使用命令将 /etc/NetworkManager/system-settings 文件夹中的现有 VPN 配置文件复制到一个新文件(作为 root,当然)在同一文件夹中,并对新副本中允许的用户、网关、用户名和密码值进行字符串替换。然后我重新启动网络管理器以应用更改。

例如:

/etc/NetworkManager/system-settings 文件夹中的典型配置文件可能如下所示:

[connection]
id=<<id>>
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
type=vpn
permissions=user:<<permissions_user>>:;
autoconnect=false

[vpn]
password-flags=0
service-type=org.freedesktop.NetworkManager.pptp
require-mppe-128=yes
mppe-stateful=yes
user=<<user>>
refuse-eap=yes
refuse-chap=yes
gateway=<<gateway>>
refuse-pap=yes

[vpn-secrets]
password=<<password>>

[ipv4]
method=auto
Run Code Online (Sandbox Code Playgroud)

...因此您可以创建一个与上面类似的新配置文件...

cd /etc/NetworkManager/system-settings
cp "existing-working-vpn-config-file" "new-vpn-config-file"
Run Code Online (Sandbox Code Playgroud)

...然后用您自己的 VPN 设置替换上面的“<<>>”值,例如:

sed -i "s/<<permissions_user>>/my_permissions_user/g" new-vpn-config-file
sed -i "s/<<user>>/my_user/g" new-vpn-config-file
sed -i "s/<<gateway>>/my_gateway/g" new-vpn-config-file
sed -i "s/<<password>>/my_password/g" new-vpn-config-file
Run Code Online (Sandbox Code Playgroud)

...然后最后通过以下命令重新启动网络管理器:

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

注意:UUID 设置似乎无关紧要,即使它不是唯一的。不知道为什么。东西刚刚好。

此外,如果您要添加新文件而不是复制文件,请确保将文件权限设置为 600(读取和写入),并且所有者是 root。

试一试,告诉我你的想法。它对我有用,全部通过命令行。