欢迎光临
我们一直在努力

openvpn设置账号密码登陆

继上篇openvpn安装,本篇主要通过账号密码的方式连接openvpn服务器。解决了证书认证的一证书一客户端的限制。

用户密码认证

1.创建用户认证脚本(checkpsw.sh)

[root@localhost ~]# cat /etc/openvpn/checkpsw.sh 
#!/bin/sh
###########################################################
# checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>
#
# This script will authenticate OpenVPN users against
# a plain text file. The passfile should simply contain
# one row per user with the username first followed by
# one or more space(s) or tab(s) and then the password.

PASSFILE="/etc/openvpn/psw-file"
LOG_FILE="/etc/openvpn/openvpn-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`

###########################################################

if [ ! -r "${PASSFILE}" ]; then
  echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
  exit 1
fi

CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`

if [ "${CORRECT_PASSWORD}" = "" ]; then 
  echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
  exit 1
fi

if [ "${password}" = "${CORRECT_PASSWORD}" ]; then 
  echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
  exit 0
fi

echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1

给予脚本执行权限:

chmod 755 /etc/openvpn/checkpsw.sh

2.配置用户密码文件

[root@localhost ~]# cat /etc/openvpn/psw-file
user1 passwd1
user2 passwd2

3.修改服务端配置文件
在server.conf末尾添加如下几行信息:

script-security 3
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env    #指定用户认证脚本
username-as-common-name
verify-client-cert none

4.修改客户端配置文件

注释掉cert和key(客户端不需要crt和key文件,但是需要服务器的CA证书)
;cert eva.crt
;key eva.key
添加如下内容:
auth-user-pass

cat /etc/openvpn/client.ovpn
client
dev tun
proto tcp
remote 123.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
tls-auth ta.key 1
remote-cert-tls server
ca ca.crt                   #该文件一定要与服务器端ca.crt是同一个文件
;cert client.crt            #定义客户端的证书文件,此处注释即可
;key client.key             #定义客户端的密钥文件,此处不需要开启   
comp-lzo                    #启用允许数据压缩,和Server端保持一致
verb 3
cipher AES-256-CBC
auth-user-pass              #使用用户名密码登录openvpn服务器

配置客户端固定IP(只需要修改server端配置文件即可)

  • 用户密码认证mkdir /etc/openvpn/ccd #新建目录
    1.服务端添加下面一行配置
cat server.conf
...
...
client-config-dir /etc/openvpn/ccd   #添加此行

2.配置具体用户的IP

cat user1       #user1对应pws-file文件里面设置的用户名
ifconfig-push 172.16.0.56 172.16.0.57

3.重启服务

service openvpn restart   #服务端重启服务

#linux客户端,kill掉进程重新执行下:
ps -ef| grep openvpn
root     10674 10658  0 11:48 pts/0    00:00:00 grep openvpn
root     32466     1  0 May25 ?        00:01:33 openvpn --daemon --cd /etc/openvpn/ --config client.ovpn --log-append /var/log/openvpn.log
kill -9 32466
openvpn --daemon --cd /etc/openvpn/ --config client.ovpn --log-append /var/log/openvpn.log

#windows客户端:
断开连接再重新连接
  • 证书认证

如果是使用证书认证的方式,那么只需要将ccd目录下的用户名命名的文件改成客户端证书名即可生效。

例如:

如上面所设置/etc/openvpn/ccd/user1对应用户user1;则/etc/openvpn/ccd/client即对应客户端证书名client的配置。
赞(3) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《openvpn设置账号密码登陆》
文章链接:https://www.caochen.net/823.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

评论 抢沙发

更专业 更方便

联系我们

觉得文章对您有帮助,就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

×