【发布时间】:2020-04-18 14:01:29
【问题描述】:
我正在尝试使用 bash 脚本验证我的 OpenVPN 客户端(使用用户名和密码)。这是我的服务器端配置的一部分:
client-to-client
username-as-common-name
client-cert-not-required
script-security 3
auth-user-pass-verify '/etc/openvpn/script/auth.sh' via-env
这是我的 bash 脚本:
#!/bin/bash
SECRET='mysecret'
RESPONSE=$(sudo /usr/bin/curl https://myvpn.com/somedir/auth.php -d"username=$1&password=$2&secret=$SECRET" --silent)
if [ "$RESPONSE" = "y" ]; then
exit 0
else
exit 1
fi
当我在命令行 (./auth.sh) 上运行它时,它运行良好并且验证正确。我已经在我的网络服务器上设置了我的 php 脚本,这样每次调用它都会生成一个日志,所以我知道请求是否成功到达。但是,当 OpenVPN 调用脚本时,curl 请求发送失败(客户端身份验证失败)。我的猜测是,出于某种原因,OpenVPN 没有使用 cURL 的权限?如何授予 OpenVPN 使用 curl 的权限?
注意:我尝试将exit 0 放在我的 bash 脚本之上,它成功地验证了用户并连接到 VPN。
【问题讨论】:
-
为什么用sudo调用curl?
-
我最初不是,但无论如何我都尝试过,以防 sudo 允许 openvpn 调用 curl。