Siguiendo la respuesta de @Fluffy (desafortunadamente no tengo suficiente reputación para comentar)
Hay un buen truco bash que puede eliminar la necesidad del archivo pass.txt
En lugar de
openvpn ... --auth-user-pass pass.txt
donde está pass.txt
opvn_user
ovpn_pass
uno puede usar
openvpn ... --auth-user-pass <(echo -e "opvn_user\novpn_pass")
tenga en cuenta el \n
uso entre nombre de usuario y contraseña
El problema con las soluciones sugeridas es que todas se basan en una contraseña de texto sin formato.
Se me ocurrió el siguiente script bash para resolver el problema:
VPN_USER="your user name"
VPN_PASSWORD="$(sudo kwallet-query -l secrets -r your_password)"
CONFIG_FILE=/tmp/your_vpn.ovpn
sudo bash -c 'openvpn --config '"$CONFIG_FILE"' --auth-user-pass <(echo -e "'"$VPN_USER"'\n'"$VPN_PASSWORD"'")'
Consulta al administrador de contraseñas (kwallet) para obtener la contraseña. También le permite reutilizar la configuración existente en CONFIG_FILE
(simplemente elimine el --auth-user-pass
entrada de ella, si la hay)
La respuesta anterior no me funcionó (todavía me pedía el nombre de usuario y la contraseña), lo que sí funcionó fue poner tus credenciales en un archivo (contraseña.txt), como este
[email protected]
password
y llamando a openvpn con --auth-user-pass pass.txt
.
fuente
Tenga en cuenta que en algunas versiones de OpenVPN (por ejemplo, OpenVPN 2.4.11) hay un error en el que primero debe usar --config
y luego --auth-user-pass
o su archivo de autenticación será ignorado sin previo aviso.
Entonces, aquí un ejemplo completo:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn --auth-user-pass pass.txt