Openvpn 无法通过基于用户的脚本发送 cURL 请求
Openvpn failing to send cURL request through user based script
我正在尝试使用 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=&password=&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,你可以这样做:
#!/usr/bin/env bash
SECRET='mysecret'
[ 'Y' = "$(
/usr/bin/curl \
--data "username=&password=&secret=$SECRET" \
--silent \
'https://myvpn.com/somedir/auth.php'
)" ]
不需要使用明确的 return 代码退出,因为测试会处理它?
我正在尝试使用 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=&password=&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,你可以这样做:
#!/usr/bin/env bash
SECRET='mysecret'
[ 'Y' = "$(
/usr/bin/curl \
--data "username=&password=&secret=$SECRET" \
--silent \
'https://myvpn.com/somedir/auth.php'
)" ]
不需要使用明确的 return 代码退出,因为测试会处理它?