Linux | OpenVPN 配置用户名密码认证
本教程为 OpenVPN 配置基于用户名和密码的客户端认证方式,适用于服务端和客户端均为 Linux 系统的环境。
步骤 1:创建用户认证脚本 checkpsw.sh
OpenVPN 需要使用一个脚本来验证用户名和密码。我们可以从官方源下载这个脚本:
# 下载认证脚本
wget "http://openvpn.se/files/other/checkpsw.sh" -O /etc/openvpn/checkpsw.sh
# 添加执行权限
chmod 755 /etc/openvpn/checkpsw.sh
步骤 2:配置用户名和密码文件
该文件中每一行包含一个用户名和对应的密码,用空格分隔:
echo "jerry passwd1" > /etc/openvpn/psw-file
你可以根据需要添加多个用户,每个用户占一行。
步骤 3:修改 OpenVPN 服务端配置文件
在 server.conf
的末尾添加以下内容,启用脚本认证机制:
# 配置 OpenVPN 服务端配置文件路径
file="/etc/openvpn/server.conf"
cat <<EOF >> $file
script-security 3
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env # 指定用户认证脚本
username-as-common-name
verify-client-cert none
EOF
解释:
script-security 3
:允许调用外部脚本。auth-user-pass-verify
:指定认证脚本路径。username-as-common-name
:将用户名作为 common name。verify-client-cert none
:关闭客户端证书验证,仅使用用户名密码。
步骤 4:修改客户端配置文件
我们为用户 jerry
生成客户端配置,并修改其 .ovpn
文件,注释掉证书相关配置,并启用用户名密码输入:
# 创建客户端配置(假设你已有该脚本)
sh /etc/openvpn/client/add_ovpn_user.sh jerry
# 客户端配置文件路径
clientCnf="/etc/openvpn/client/keys/jerry/jerry.ovpn"
# 注释掉证书文件配置
sed -i 's/cert client.crt/;cert client.crt/g' $clientCnf
sed -i 's/key client.key/;key client.key/g' $clientCnf
# 添加用户名密码登录支持
echo "auth-user-pass" >> $clientCnf
完成!
现在,客户端连接时会弹出用户名和密码输入提示,服务端通过 checkpsw.sh
脚本与 psw-file
文件进行验证,无需使用客户端证书登录。
可以根据实际需要扩展用户列表、增强脚本安全性或接入外部认证系统。
更新日志
2025/6/15 11:14
查看所有更新日志
13186
-initial于