Openvpn 无法通过基于用户的脚本发送 cURL 请求

Openvpn 无法通过基于用户的脚本发送 cURL 请求

我正在尝试使用 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。

答案1

RESPONSE=$(sudo /usr/bin/curl https://myvpn.com/somedir/auth.php -d"username=$1&password=$2&secret=$SECRET" --silent)

除非特别需要,否则不要使用 sudo。我怀疑运行此脚本的用户(openvpn 用户?)将有权访问 curl。

相关内容