我设法设置了 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 来监听管理端口并保持。您可以编写一个脚本/接口来收集用户的凭据,然后您可以建立套接字连接并提供凭据并释放保持。