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

时间:2019-12-29 14:46:34

标签: bash curl openvpn

我正在尝试使用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)上运行它时,它可以正常运行并正确进行身份验证。我已经在我的Web服务器上设置了我的php脚本,以便每次调用它时都会生成一个日志,因此我知道请求是否成功达到。但是,当OpenVPN调用脚本时,curl请求将无法发送(客户端身份验证失败)。我的猜测是,由于某种原因,OpenVPN没有使用cURL的权限?如何授予OpenVPN使用curl的权限?

注意:我尝试将exit 0放在我的bash脚本之上,它成功验证了用户身份并连接到VPN。

1 个答案:

答案 0 :(得分:1)

如果您不需要sudo,可以使用:

#!/usr/bin/env bash

SECRET='mysecret'
[ 'Y' = "$(
  /usr/bin/curl \
    --data "username=$1&password=$2&secret=$SECRET" \
    --silent \
    'https://myvpn.com/somedir/auth.php'
)" ]

因为测试会处理掉它,所以无需退出并返回明确的返回代码?