Рейтинг:0

OpenVPN. Как предоставить интерактивные учетные данные в скрипте

флаг ru

У меня есть скрипт, который устанавливает и настраивает VPN, а затем подключается к нему:

apt установить apt-транспорт-https
wget https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub
apt-key добавить openvpn-repo-pkg-key.pub
wget -O /etc/apt/sources.list.d/openvpn3.list https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-focal.list
удачное обновление
метко установить openvpn3
начало сеанса openvpn3 --config profile-59.ovpn

Когда я запускаю его на Ubuntu Desktop, он запрашивает учетные данные в интерактивном режиме: введите описание изображения здесь

Как я могу настроить скрипт для передачи учетных данных без интерактивного запроса? Целью этого является автоматическое подключение контейнера Docker к VPN.

bac0n avatar
флаг cn
Есть ли причина, по которой вы не можете использовать параметр конфигурации «auth-user-pass»?
WinBoss avatar
флаг ru
Никогда не слышал об этом. Как я могу это сделать?
Рейтинг:2
флаг in

Возможно, вы захотите изучить что-то вроде ожидать, что позволит вам сделать что-то вроде этого:

порождать vpn_connect.sh
ожидать «Имя пользователя аутентификации:»
отправить "транспортир-контейнер\r"
ожидать "Пароль:"
отправить "superSecretPassword!123\r"

Конечно, это может быть не идеально, если несколько человек имеют возможность подключаться к контейнеру Docker или читать исходные файлы, которые упаковываются в сборку, поскольку незашифрованные пароли могут создавать проблемы.

Одним из вариантов было бы создать отдельный файл, содержащий учетные данные, и сохранить его в месте внутри контейнера Docker, например /root/.private/vpn-creds. Этот файл будет содержать всего две строки:

транспортир-контейнер
суперсекретный пароль!123

Затем вы можете отредактировать свой ожидать скрипт, чтобы он выглядел так:

#!/usr/bin/ожидание -f

установить пароль [открыть "/root/.private/vpn-creds" r]
получает имя пользователя $passfile
получает пароль $passfile
закрыть $passfile

порождать vpn_connect.sh
ожидать «Имя пользователя аутентификации:»
отправить "$имя_пользователя\r"
ожидать "Пароль:"
отправить "$пароль\r"

Имейте в виду, если у всех корень доступа, вы мало что можете сделать в автоматическом режиме, чтобы скрыть учетные данные. Решительный человек с судо кто знает, как использовать StackExchange, найдет способ получить нужную им информацию

WinBoss avatar
флаг ru
Для этого потребуется хранить пароль в файле, верно? Можем ли мы сделать это без него?
флаг in
@WinBoss добавил немного, чтобы показать, как читать учетные данные из других источников, с оговоркой

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.