#!/bin/bash # Check if running as root if [ "$EUID" -ne 0 ]; then echo "Please run as root" exit 1 fi if [ -z "$1" ]; then echo "Usage: $0 " exit 1 fi CLIENT_NAME=$1 cd /etc/openvpn/server/easy-rsa # Generate client certificate and key ./easyrsa gen-req $CLIENT_NAME nopass ./easyrsa sign-req client $CLIENT_NAME # Make sure client directory exists mkdir -p /etc/openvpn/client # Create client configuration cat > /etc/openvpn/client/$CLIENT_NAME.ovpn << EOL client dev tun proto udp remote $(curl -s ifconfig.me) 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-GCM data-ciphers AES-256-GCM:AES-256-CBC:AES-128-GCM:CHACHA20-POLY1305 block-outside-dns verb 3 dhcp-option DNS 1.1.1.1 dhcp-option DNS 1.0.0.1 $(cat /etc/openvpn/server/ca.crt) $(cat /etc/openvpn/server/easy-rsa/pki/issued/$CLIENT_NAME.crt) $(cat /etc/openvpn/server/easy-rsa/pki/private/$CLIENT_NAME.key) EOL # Copy the configuration file to the current working directory WORKING_DIR=$(pwd) cp /etc/openvpn/client/$CLIENT_NAME.ovpn $WORKING_DIR/ chmod 644 $WORKING_DIR/$CLIENT_NAME.ovpn echo "Client configuration created: /etc/openvpn/client/$CLIENT_NAME.ovpn" echo "A copy has also been saved to: $WORKING_DIR/$CLIENT_NAME.ovpn"