上一篇文章已经成功的搭建好 OpenVPN 了,客户端直接使用证书就可以连接了,但是多个人使用的话,建议还是改为账号+密码方式的, 解决了证书认证的一证书一客户端的限制。

服务端配置

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

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
client-cert-not-required  #代表只使用用户名密码方式验证登录,如果不加,则代表需要证书和用户名密码双重验证登录!
client-config-dir /etc/openvpn/client   #固定客户端Ip

4.配置客户端固定IP

mkdir /etc/openvpn/client #新建目录

配置具体用户的IP

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

客户端固定IP选配,根据你的需求来。

5.重启服务

systemctl restart openvpn

客户端配置文件

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

原文:http://www.89cool.com/811.html

2 thoughts on “OpenVPN实现账号密码登录(旧版)

  1. 看了你写的文章很好很详细,但我不会linux系统。
    请教一下openVP*服务等是windows
    1.怎么给每个客户端设置固定IP
    2.怎么设置客户端使用户名和密码连接登录服务端.
    openvp*版本2.4.6
    谢谢大佬!!!!

    1. 也是看得人家文章,自己做的实验, windows 没有试过,逻辑上应该能走的通吧,改下脚本内容试试,现在的话openvpn as是有控制台的,管理更方便。建议去官网试用下最新版的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据