Подключение / отключение от VPN из командной строки


132

У меня есть две настройки VPN на моей машине с Ubuntu, одна из которых использует vpnc, а другая - PPTP. Они оба были настроены с использованием интерфейса сетевого менеджера GNOME и отлично работали. Однако иногда мне нужно получить удаленный доступ к этой машине - есть ли способ подключиться или отключиться от этих VPN из командной строки?


Команда vpnc, описанная здесь, не работает для вас? Также здесь есть инструкции по настройке и подключению к PPTP . Они не работают?
— Крис Харпер

Ответы:


192

Если вы хотите взаимодействовать с NetworkManager из командной строки, вы можете использовать команду «nmcli».

список всех соединений NM: nmcli con

начать соединение (wifi, vpn и т. д.): nmcli con up id ConnectionName

нисходящее соединение: nmcli con down id ConnectionName

(больше команд nmcli на справочной странице nmcli ).


Также обратите внимание, что обычные пользователи обычно не имеют разрешения на управление сетью. Использование приведенных выше команд с sudoдолжно работать для большинства соединений, но VPN может не работать с ошибкой «Ошибка: сбой активации соединения: нет действительных секретов VPN».

Если это произойдет с вами, вероятно, пароль VPN хранится в gnome-keyring вашего пользователя, что делает его недоступным для пользователя root. Этот комментарий объясняет почему.

Чтобы это исправить, отредактируйте файл / etc / NetworkManager / system-connections / ConnectionName и под ним [vpn], измените строку флагов паролей на:

password-flags=0

Если есть строка, начинающаяся с Xauth password-flags, измените ее.

Затем добавьте следующее ниже [vpn]блока:

[vpn-secrets]
password=YourPassword

(Если на предыдущем шаге вы изменили строку Xauth password-flags, добавьте Xauth password=...вместо этого.)

Теперь перезапустите сетевой менеджер:

sudo service network-manager restart

Тогда запуск VPN-соединения с sudo nmcli con up id ConnectionNameдолжен работать без проблем.


1
Хотелось бы, чтобы была общая команда отсоединения, которая отключала бы любой VPN без указания его идентификатора. Это, вероятно, облегчит реализацию этой функции (я хочу).
— Лонни Бест

Если вы используете ipsec (например, vpnc), вам также может понадобиться добавить «IPSec secret-flags = 0» и «IPSec secret = <grouppw>» в соответствующих местах
— Мэтт

Это до сих пор не исправил меня :( Я получаю сообщение «Error:: активация Не удалось установить соединение по неизвестной причине.»
— Дано

Я забираю это ... после 3-го раза, когда я выполнил команду, она работала. 1-й раз провалился быстро. 2-й раз провалился медленно. Третий раз сработал!
— Дано

2
Очистить текст PWs ?? В самом деле?? У кого-нибудь есть БЕЗОПАСНОЕ решение?
— user447607

4

Ответ ihashacks с комментариями Мэтта сработал для меня ... почти. Пришлось подправить одну строчку.

моя строка флага пароля фактически читается: "Xauth пароль-флаг". Принятый ответ не будет работать для меня, пока я не перейду на следующий

[vpn]
...
Xauth password-flag=0
IPSec secret-flags=0

[vpn-secrets]
Xauth password=<my pw> ## This is the one I changed.
IPSec secret=<group pw>

Не уверен, почему в моих соединениях vpn есть «Xauth» перед каждым упоминанием пароля.

(Извините, это новый ответ, пока не могу комментировать.)


2
Это для некоторых типов VPN, например, Cisco; очень полезно для этих случаев! Однако есть ошибка: правильный регистр одного ключа IPSec secret- иначе, он не распознается NM.
— Маркус

Спасибо, Маркус, я исправил свой ответ, поэтому никто не пытается скопировать / вставить опечатку.
— Джон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.