OpenVPN:错误:无法从标准输入读取 Auth 用户名

OpenVPN:错误:无法从标准输入读取 Auth 用户名

我设法设置了 openvpn,但现在我想集成用户/密码身份验证方法,因此,即使我没有auth-nocache在服务器配置中添加它,每当我尝试连接时,它都会在客户端返回以下消息:

ERROR: could not read Auth username from stdin

我的 server.conf 文件包含基本内容,一切正常,直到我尝试实现这一点进行身份验证。

mode server
dev tun
proto tcp
port 1194

keepalive 10 120

plugin /usr/lib/openvpn/openvpn-auth-pam.so login

client-cert-not-required
username-as-common-name

auth-user-pass-verify /etc/openvpn/auth.pl via-env

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

user nobody
group nogroup
server 10.8.0.0 255.255.255.0

persist-key
persist-tun
#persist-local-ip

status openvpn-status.log
verb 3
client-to-client

push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
log-append /var/log/openvpn
comp-lzo

我在整个网络上搜索解决方案并且所有答案似乎都与我尚未设置的 auth-nocache 参数有关。

该指令auth-user-pass-verify /etc/openvpn/auth.pl via-env指向执行身份验证的脚本。错误身份验证应导致退出 1,而正确身份验证应导致退出 0。为了进行测试,无论输入是什么,该脚本 auth.pl 都会返回退出 0,但似乎在出现错误之前文件未执行。

验证码文件内容:

#!/usr/bin/perl


my $user = $ENV{username};
my $passwd = $ENV{password};

printf("$user : $passwd\n");
exit 0;

有任何想法吗?

答案1

您是否尝试过提供script-security 3允许 openvpn 运行外部程序的选项?

虽然请求密码的更好解决方案可能是设置 OpenVPN 来监听管理端口并保持。您可以编写一个脚本/接口来收集用户的凭据,然后您可以建立套接字连接并提供凭据并释放保持。

相关内容