我设法设置openvpn,但现在我想集成一个用户/通过身份validation方法,即使我没有添加auth-nocache在服务器configuration,每当我尝试连接它返回与客户端上的以下消息:
ERROR: could not read Auth username from stdin
我的server.conf文件包含基本的东西,一切工作,直到我试图实现这个authentication。
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
我在网上search了一个解决scheme,所有的答案似乎都与我没有设置的auth-nocache参数有关。
指令auth-user-pass-verify /etc/openvpn/auth.pl via-env指向执行authentication的脚本。 一个错误的身份validation应该导致一个退出1,而一个真正的应该导致退出0.对于testing,该脚本auth.pl返回退出0,不pipeinput是什么,但似乎该文件没有被执行之前,错误引发。
auth.pl文件内容:
#!/usr/bin/perl my $user = $ENV{username}; my $passwd = $ENV{password}; printf("$user : $passwd\n"); exit 0;
有任何想法吗?
你有没有尝试提供script-security 3选项,以允许openvpn运行外部程序?
虽然更好的解决scheme要求密码可能会设置OpenVPN监听pipe理端口,并保持。 你可以编写一个脚本/接口来收集用户的证书,然后你可以build立一个套接字连接并提供证书并释放持有。