如何在Network Manager中使用.ovpn文件?

我有一个带有VPN配置的.ovpn文件 - 当我这样做时,它运行良好。
sudo openvpn --config ~jrg/Documents/vpn-config.ovpn 

在终端中,但我想使用网络管理器。我该怎么做?


12在终端中运行命令 sudo nmcli connection import type openvpn file /path/to/your.ovpn,详细步骤可以参考链接:https://www.cyberciti.biz/faq/linux-import-openvpn-ovpn-file-with-networkmanager-commandline/ - chepe263
1@chepe263 把这个变成一个答案,你会得到我的投票(顺便说一句,NM架构是这样的,连接导入时不需要使用sudo命令) - Samveen
@chepe263对我来说不起作用:错误:无法导入'file.ovpn':配置错误:不支持的blob/xml元素(第7行)。 - Darkproduct
9个回答

首先,安装OpenVPN网络管理器插件:

sudo apt-get install network-manager-openvpn-gnome

打开网络管理器,点击“添加”,在打开的窗口中选择“导入已保存的VPN配置...”下的“选择连接类型”。导航到您的.ovpn文件(~jrg/Documents/vpn-config.ovpn)。如果它没有自动找到您的证书/密钥(其路径在.ovpn文件中找到),您可以在这里选择它们,或进行其他小的更改。

openvpn dialog

另外一件可能会在未来节省你一些麻烦的事情是点击IPv4设置,然后将方法更改为“仅自动(VPN)地址”。如果保持默认设置,这将导致所有的互联网流量都通过VPN进行传输,而不管你的.ovpn设置如何。在这里,你还可以设置连接时要使用的DNS服务器和搜索域名。

openvpn dialog


4当我点击“导入”时,它没有显示证书等内容。 - jrg
我更新了我的答案,使其更加详尽。如果选项没有显示出来,那么你要么配置了错误的.ovpn文件并且实际上没有使用它们,要么需要更改“类型”下拉框。 - reverendj1
你能让它工作了吗? - reverendj1
1网络管理器中存在一个关于ovpn文件的错误。请参阅https://bugs.launchpad.net/ubuntu/+source/network-manager-openvpn/+bug/606365 - lenzai
22在我的情况下(使用Debian Jessie),没有“导入...”按钮 :( - knocte
4我也找不到任何“导入”按钮。只有一个“创建”的选项.. :( - Thomas Ahle
4Open VPN AS版本2.0.12不会生成包含证书位置的.ovpn文件,它会将证书本身包含在其中。因此,它无法找到这些证书,你也无法找到它们的位置。你必须像其他答案中所述一样进行复制和粘贴。 - jowan sebastian
1我也不得不复制和粘贴:"VPN AS ver 2.0.12不会生成包含证书位置的.ovpn文件,它自己包含了这些位置。因此,它将无法找到它们,你也无法找到它们的位置。你必须复制并粘贴。" - That Brazilian Guy
请问您能提供一个带有“导入”按钮的窗口截图吗? - naktinis
@naktinis 抱歉,这是法语的,但是这里有链接:https://github.com/dolanor/ovpnsplit/raw/master/doc/02-import-vpn-config.png - Dolanor
8截至16.04,它仍然不工作,而且这次至少你会得到"插件不支持导入"的错误。即使手动配置,网络管理器仍然存在问题。 - Christian Bongiorno
你可以使用https://www.npmjs.com/package/openvpn-config-splitter将.ovpn文件拆分为多个独立的文件。 - zub0r
network-manager-openvpn-gnome插件只能识别2.3版本的"remote vpn.site.com \nport 1194 \nproto tcp",而不能识别2.4版本中的新格式"remote vpn.site.com port 1194 tcp-client"。即使密钥没有受到保护,它也需要在私钥密码表单中填写“something”。 - shadowbq
https://git.gnome.org/browse/network-manager-openvpn/tag/?h=1.8.2 可能提供更好的支持。 - shadowbq
我在Xubuntu上遇到了一个错误,它说插件不支持导入功能,然而,在安装插件后导入按钮却出现了。 - Slava Fomin II

自Ubuntu 18.04开始,如果您已经有opvn文件,可以导入它。(不需要sudo权限)

nmcli connection import type openvpn file [client].ovpn

完成后,转到搜索并找到“网络”,新的 VPN 连接将出现在那里。


2谢谢,这比在网络管理器GUI中胡闹要好得多。(如果nm-applet是我拥有的,我甚至不需要使用sudo) - AAAfarmclub
1這個方法在Debian 10上也適用,我認為由於原文詢問如何導入,這應該是答案。 - HidekiAI
1这适用于Ubuntu 18,只有一个事实,即使您输入正确的密码,如果它不断要求密码,请检查配置,我不得不通过GUI手动输入用户名和密码来编辑配置。 - Mohd Abdul Mujib
1正如我在对原帖的评论中提到的那样,鉴于NM的架构,不需要使用sudo - Samveen

我的个人经验是在Ubuntu 14.04上成功建立VPN连接。

我们的管理员给了我3个文件,要将它们安装到Windows 7的openVPN中:*.ovpn,*.crt,*.key

在Ubuntu终端中执行以下命令: sudo apt-get install openvpn network-manager-openvpn network-manager-openvpn-gnome network-manager-vpnc sudo /etc/init.d/networking restart
打开“网络连接”窗口(VPN连接 -> 配置VPN)
点击“添加”按钮,选择“导入保存的VPN配置”,然后点击创建按钮。
在“选择要导入的文件”中选择您的“*.ovpn”文件。
在“编辑...您的*.ovpn文件名...”窗口中输入您的VPN用户名和密码。确保CA证书字段中出现了一个*.crt文件。
打开“IPv4设置”面板,选择“仅自动(VPN)地址”。
再次打开“VPN”面板,点击“高级”按钮。
打开“TLS身份验证”面板,确保您的“*.key”出现在“密钥文件”字段中。点击确定按钮。
在“编辑...您的*.ovpn文件名...”窗口中点击“保存”按钮。
您的VPN连接应该出现在“网络连接”窗口中。
那就这样了,希望能有所帮助。祝你好运!

2这对我有用,但是没有第8步。 - Aamir Abro

回答晚了,但我找到了一个解决方案(而且真的很痛苦)...

  1. 在您的主目录中创建一个名为.OpenVPN的文件夹(前面有一个点,以便隐藏),然后打开该文件夹并创建一个名为FrootVPN的文件夹(不需要点)。这样可以更轻松地管理不同的VPN提供商。
  2. 将froot.ovpn复制/粘贴到/home/YOU/.OpenVPN/FrootVPN文件夹中。
  3. 用文本编辑器打开froot.ovpn文件。
  4. 复制在ca /ca标签之间的所有内容。
  5. 将内容粘贴到一个新文件中,并将其保存为ca.crt,保存在/home/YOU/.OpenVPN/FrootVPN文件夹中。
  6. 点击网络管理器图标,然后转到VPN CONNECTIONS > CONFIGURE VPN...
  7. 点击ADD,选择OpenVPN。点击CREATE。
  8. 将其命名为FrootVPN 1194,使用se-openvpn.frootvpn.com作为网关。类型将是PASSWORD。输入您的FrootVPN用户名和密码。在CA证书上,点击文件夹图标,浏览到您创建的ca.crt文件。
  9. 点击高级按钮,将“Use custom gateway port:”更改为1194。点击OK。
  10. 在IPv4和IPv6选项卡上都将方法更改为Automatic (VPN) addresses only
  11. 点击SAVE。

现在是痛苦的部分:您需要创建15个额外的FrootVPN连接,因为它们使用端口1194-1209。重复步骤7-11以进行端口1195,然后再进行1196,以此类推,直到完成端口1209,确保步骤8中的名称与步骤9中的端口匹配。我知道...这很糟糕!

现在,您可以通过点击网络管理器图标并转到VPN连接来连接到FrootVPN。按照FrootVPN连接列表逐个尝试连接,直到找到一个可以连接的。

坦率地说,我希望网络管理器直接支持.ovpn文件。我们应该能够导入.ovpn文件,网络管理器从中获取所有正确的设置,执行由VPN提供商指定的正确范围的网关端口和其他设置,并将其全部保存为一个连接。如果一切都在.ovpn文件中,就不需要.crt文件。


1这真是糟透了,有人知道是否有官方的错误报告渠道吗? - jowan sebastian
1我知道。这确实很糟糕。我希望有一个像Windows那样简单的图形用户界面来打开它们。 - Buford T. Justice
3现在回答有点晚了...已经是2019年了,但这个回答仍然帮了我大忙,谢谢! - Mathias Vonende

在Unity 14.04中,我只需要进入编辑连接,点击“添加”,使用下拉列表选择导入已保存的VPN配置,然后选择我的“filename.ovpn”文件,就完成了。

6这看起来很有前途,但几乎没有使用我的 .ovpn 文件,它只是提取出网关,没有任何证书存在。:\ - James T Snell
这对我来说很有效,没有任何问题。Ubuntu 16.04。 - jonasfh

我用Network Manager作为OP所要求的方式回答了这个问题,但是有一个更好的方法!你只需要下载并安装一个叫做gopenvpn的程序,可以通过Ubuntu软件中心获得。将你的.ovpn文件保存到/etc/openvpn目录下(以管理员身份)。打开gopenvpn,它应该在应用程序>互联网下列出,并通过右键单击任务栏上的gopenvpn图标来连接.ovpn文件。像吃派一样简单,这就是电脑上任何事情应该的方式 :)
此外,你还可以通过在/etc/openvpn中创建以以下格式命名的.txt文件来绕过用户名和密码:
username
password

然后在您的每个.ovpn文件中(例如VPNBook .ovpn文件),更改以下行:
auth-user-pass

致:

auth-user-pass VPNBook.txt

使用SED在所有的.ovpn文件中逐行进行替换。
root@masi:/etc/openvpn# sed -i '/auth-user-pass/c\auth-user-pass nordvpn.txt' *.ovpn

最后确保安全,做到让其他人看不到你的用户名和密码。
root@masi:/etc/openvpn# chmod 700 nordvpn.txt

使用sed命令替换所有以.ovpn为后缀的文件中的内容,例如:root@masi:/etc/openvpn# sed -i '/auth-user-pass/c\auth-user-pass nordvpn.txt' *.ovpn,其中密码文件位于/etc/openvpn/。- - 相关链接:https://nordvpn.com/tutorials/linux/openvpn/ - Léo Léopold Hertz 준영
2请注意安全问题,你的密码可能会被他人知晓。 - Léo Léopold Hertz 준영
在放置敏感信息之前,也要保护文件。文件权限应为600,所有者应该是root。我认为这并不比使用nmcli或网络管理器UI(取决于桌面环境)导入更好。 - akostadinov

由于这个问题多次困扰我,我决定创建一个工具来自动化将带有嵌入证书的.ovpn文件“降级”为指向其他.pem文件的.ovpn文件。
工具可以在这里找到:https://github.com/dolanor/ovpnsplit/ 它是用Go语言编写的,所以您需要安装Go,或者您可以直接使用这里的二进制文件:https://github.com/dolanor/ovpnsplit/releases 将您的.ovpn文件放在您想要的位置(我将其放在了~/.config/openvpn/目录下),然后启动该工具: ovpnsplit ~/.config/openvpn/file.ovpn 它将会将所有嵌入在file.ovpn中的文件拆分成单独的.pem文件。
在NetworkManager中,选择导入VPN配置,然后选择您的~/.config/openvpn/file.ovpn文件。通常情况下,所有证书文件都应该指向正确的文件。
但是另一个错误导致NetworkManager无法从TLS Auth的高级设置中检测到密钥方向。因此,您还需要将其放置在正确的方向上...
之后,保存即可。
该工具将有助于使用kylemanna/openvpn docker镜像,该镜像创建所有证书和TLS Auth。

你知道哪个版本的Ubuntu将是第一个允许使用嵌入证书的.opvn文件的版本吗?(为了使用ovpnsplit这个很棒的工具,别误会我的意思) - knocte
根据这个链接:https://bugs.launchpad.net/ubuntu/+source/network-manager-openvpn/+bug/606365。看起来问题已经修复了。我认为我们还在功能冻结之前,而且由于这是一个错误,它可能会在16.04版本中得到修复。我猜你就是在这个错误上发表评论的那个人 :) - Dolanor
1是的,我是那个发帖的人,但是没有人回复 :( - knocte

我创建了一个脚本这里来自动获取来自多个VPN网站(如vpnbook.com)的密码和压缩文件,从ovpn文件中提取cacertkey数据,并更新ovpn文件,以便证书可以轻松导入。它可以很容易地修改以适用于其他供应商。

当您没有用户证书时,您必须在身份验证下拉菜单中选择“密码”类型。然后在高级选项中,在“TLS身份验证”中添加TLS .key文件,并根据需要设置方向(1或0,这应该在.ovpn文件中设置)。