Удалённый редактор VPN через SSH: какую машину вы редактируете?
Перенаправление X11 показывает удалённый редактор на вашем ноутбуке, но профиль и маршруты остаются на удалённом хосте. Проверьте хост, UUID и путь отката, прежде чем сохранять.
Перенаправление X11 помещает окно редактора на ваш ноутбук, а процесс продолжает работать на удалённом хосте. Этот разрыв и есть вся ловушка: вы смотрите на локальное окно и редактируете удалённый профиль, и неверное предположение о том, какой машине принадлежит изменение, может оборвать SSH-соединение, через которое вы работаете. Контрольный список ниже фиксирует хост и профиль, прежде чем что-либо будет сохранено. У каждого шага есть условие остановки, поэтому ранняя ошибка обходится дёшево.
Шаг 1: назовите машину, которой принадлежит профиль
Выполните команды идентификации в оболочке, которую собираетесь настраивать, и прочитайте ответ, а не угадывайте его по приглашению. Имя хоста в приглашении — это строка, которую вывела ваша оболочка; имя хоста ядра — то, чему доверяет остальная часть этого списка. Если они расходятся, вы на неправильной машине или приглашение украшено вашей локальной оболочкой. Остановитесь и переподключитесь к нужному хосту, прежде чем продолжать.
hostnamectl
hostname -f
ip -brief address
Следующий вопрос — должна ли эта машина вообще держать VPN. Настройка клиента ноутбука и настройка клиента удалённого хоста дают разные маршруты, разный DNS и разные режимы отказа. Решите, какой из них вы имеете в виду, прежде чем трогать профиль, и запишите решение там, где его найдёт следующий человек.
Шаг 2: читайте профиль по UUID, а не по метке
NetworkManager идентифицирует соединение по UUID, тогда как имя — это метка, которую любой может изменить или продублировать. Перечислите оба и сопоставьте именно ту запись, которую вы имеете в виду, особенно на хосте, куда за годы было импортировано несколько профилей VPN.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show --active
nmcli general permissions
Сохранённые записи и активные соединения отвечают на разные вопросы: первая перечисляет то, что существует, вторая — то, что сейчас несёт трафик. Строка разрешений описывает локальную политику для вашей сессии и ничего не говорит о том, примет ли VPN-шлюз учётную запись. Если нужного профиля нет в сохранённом списке, остановитесь здесь, потому что редактировать неверную запись хуже, чем не редактировать вовсе.
Получив UUID, поместите его в переменную и используйте эту переменную в каждой последующей команде. Это устраняет целый класс ошибок копирования и вставки и делает запись воспроизводимой.
UUID=$(nmcli -g UUID connection show 'Corp VPN')
nmcli connection edit uuid "$UUID"
Шаг 3: решите, подходит ли графический редактор
Редактор, которому нужен запрос polkit или агент секретов, не получит их только потому, что его окно появилось на вашем ноутбуке. Эти компоненты работают в контексте удалённой сессии, а перенаправление экрана их не перенаправляет. Если редактор не может сохранить из-за ошибки авторизации или секрета, проблема не в экране.
echo "$DISPLAY"
ssh -X you@vpn-host
xauth list
OpenSSH включает перенаправление X11 с помощью -X и документирует связанную с этим осторожность: удалённый хост может достичь вашего локального экрана, что является настоящей границей доверия. Доверенное перенаправление с помощью -Y убирает часть этих проверок и никогда не должно быть рефлекторным решением для приложения, которое падает при настройках по умолчанию. Если ваша организация публикует метод удалённого администрирования, используйте его вместо того, чтобы изобретать вариант. В большинстве случаев редактор командной строки — меньшая поверхность и лучший ответ.
Остановитесь здесь, если единственный работающий путь требует -Y и вы не можете объяснить почему. Это решение для владельца политики безопасности, а не обход, который стоит держать в личном скрипте.
Шаг 4: сохраните путь восстановления, прежде чем что-либо активировать
Изменение VPN может удалить маршрут, от которого зависит ваша SSH-сессия, поэтому подготовьте путь назад, прежде чем активировать профиль. Доступ через консоль, адрес внеполосного управления или запланированный откат — всё это считается; надежда на то, что изменение сработает, не считается.
sudo systemctl status NetworkManager
ip route show default
ss -tn state established '( sport = :22 )'
Активируйте только нужный профиль, затем проверьте с удалённого хоста: маршрут по умолчанию, обратный путь SSH и один ресурс, который должен быть доступен через туннель. Успешная проверка с вашего ноутбука проверяет путь ноутбука и ничего не говорит об удалённом хосте. Если сессия оборвётся, используйте путь восстановления, а не подключайтесь вслепую. Сохранение профиля — не активация, а активация — не проверка.
Запишите UUID, изменённые значения свойств и команды, которыми вы их проверяли. Следующему человеку, который коснётся этого хоста, понадобятся все три, а запись ценнее сводки о том, что VPN исправлен. Контрольный список, который заканчивается без заметки об откате, — половина списка.