Я пытаюсь подключиться к своему VPN с помощью терминала. Мой пароль VPN - это TOTP, поэтому я не могу сохранить его в файле конфигурации подключения. Когда я пытаюсь подключиться, появляется диалоговое окно для ввода пароля. Я хочу сделать это в самом терминале, поскольку я могу сгенерировать свой TOTP из скрипта. Я просто не мог понять, как. Есть ли способ указать пароль в командной строке или отправить пароль из командной строки в диалоговое окно?
Вы можете обновление записи пароль в отдельный файл. Это работает на меня:
echo "vpn.secrets.password:MY_PASSWORD" > /my/vpn/password
nmcli con up uuid MY_UUID passwd-file /my/vpn/password
Последний администратор сети в Ubuntu 14.04 0.9.8.8 и как Вы сказали, не поддерживает ту функцию. Функция для принятия пароля, кажется, была представлена в 1.11.1-dev, по крайней мере, в документах. https://github.com/NetworkManager/NetworkManager/commit/b19e4d37b6272834cb98a000cfa7bc247607e2f7#diff-a86a2b799f258f5c584a76d83 0e845db
Я не нашел другой способ передать в пароле или, кажется, что нужно обновить администратора сети или обновить Ubuntu.
Можно установить пароль с помощью следующей команды:
nmcli con mod VPNID vpn.secrets "password=VPNPASS"
где VPNPASS является паролем VPN.
Для этого для работы необходимо включить возможность хранения пароля в NetworkManager, как показано в этом изображении.
Я использую Ubuntu 16.04.
Есть более элегантный и безопасный способ обойти это. Сохраните свой пароль в gnome-keyring:
~$ sudo apt install libsecret-tools
~$ secret-tool store --label='vpn' vpn_name your_unique_vpn_name
Теперь давайте создадим скрипт для запуска VPN. Ключ, который должен быть предоставлен, кстати, может отличаться. В моем примере это vpn.secrets.cert-pass
. Скрипт нужно поместить в ~/bin/
.
#!/bin/sh -e
vpn=your_vpn_connections_name
tmp=$(mktemp)
chmod 600 $tmp
printf "vpn.secrets.cert-pass:$(secret-tool lookup vpn_name your_unique_vpn_name)">$tmp
nmcli c u "$vpn" passwd-file $tmp
rm $tmp