Вопрос или проблема
Когда я работаю из дома, я подключаюсь с моего компьютера под управлением Linux к VPN с помощью этой команды:
$ sudo openconnect --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work
что требует от меня
- ввести пароль моего локального пользователя, просто потому что я использую
sudo
, - ввести пароль моего пользователя в VPN на работе,
- подтвердить с другого устройства из-за MFA.
Я только что заметил, что
- до шага 1,
who
на моем локальном компьютере показывает, что я единственный, кто вошел в мой компьютер:
myself tty1 2025-01-14 17:47
- сразу после шага 1,
who
на моем локальном компьютере показывает, что я только что вошел в систему еще раз:
myself tty1 2025-01-14 17:47
myself pts/2 2025-02-03 07:17
Что означает вторая строка вывода?
Я имею в виду, я подключился к VPN. Почему это означает, что я повторно вошел в свою собственную систему?
Когда вы используете openconnect
для VPN, вы можете заметить дополнительную запись о входе в список who
, как эта:
myself tty1 2025-01-14 17:47
myself pts/2 2025-02-03 07:17
Это происходит, потому что openconnect
запускает новую активную сессию.
Когда вы запускаете openconnect
, он может инициировать обмен с PAM (Плагин-модули аутентификации), который обрабатывает простые процессы входа.
- Это взаимодействие может создать новый псевдотерминал (pts/X), поэтому
who
показывает дополнительную запись. (Использованиеsudo
также запускает новую оболочку.) - Поскольку вы используете
sudo
, это может запустить новую оболочку или сессию как часть процесса входа. - Некоторые VPN-приложения, такие как
openconnect
, могут запускать шаги сессии PAM, что делает это похожим на новый вход в систему. - Некоторые настройки VPN создают виртуальный терминал.
Вхожу ли я дважды?
Нет, вы на самом деле не входите повторно в традиционном смысле. Дополнительная запись — это просто побочный эффект того, как openconnect
взаимодействует с вашей системой. Это безвредное и ожидаемое поведение.
Если вы хотите этого избежать, попробуйте запустить openconnect
без sudo
(если возможно), или используйте:
sudo openconnect --background --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work
Флаг --background
может помочь предотвратить создание интерактивной сессии.
Ответ или решение
При подключении к VPN с использованием команды openconnect
в Linux, вы можете заметить, что команда who
отображает дополнительную запись о входе. Это явление обычно вызывает недоумение, особенно если никаких действий, кроме подключения к VPN, не производилось. Чтобы понять это поведение, необходимо рассмотреть аспекты работы сессий, PAM (Pluggable Authentication Modules), и псевдотерминалов.
Теория
Когда вы используете команду sudo openconnect
, система начинает новый процесс, который требует повышения привилегий (первый факт). На этом этапе будет запущен процесс openconnect
, который инициирует взаимодействие с PAM — это модуль, управляющий процессами аутентификации в Linux. PAM может инициировать новую сессию или открыть псевдотерминал (pts), что видно в выводе who
.
Когда запускается псевдотерминал, система его регистрирует как новую сессию. Характерно то, что sudo
подразумевает использование другого уровня привилегий, что потенциально может инициировать новые сессии или процессы.
Пример
Рассмотрим последовательность действий:
- Вы выполняете
sudo openconnect --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work
. - Вводите пароль локального пользователя и проходите авторизацию на удаленном VPN сервере.
- В ходе аутентификации PAM обрабатывает создание новой сессии и может быть инициирован новый pts.
К примеру, ваш изначальный вход выглядел следующим образом:
myself tty1 2025-01-14 17:47
После того как вы выполните команду, who
покажет:
myself tty1 2025-01-14 17:47
myself pts/2 2025-02-03 07:17
Применение
Важно понимать, что появление нового входа в who
не означает, что вы действительно вошли в систему дважды одновременно. Это просто побочный эффект запуска процесса openconnect
, взаимодействующего с PAM, который и открывает новый псевдотерминал. Это совершенно безвредное и ожидаемое поведение.
Для минимизации подобного поведения, можно рассмотреть следующие действия:
- Запустить
openconnect
без использованияsudo
, если это возможно. Это может помочь избежать создаваемых новых сессий командойsudo
. - Использовать флаг
--background
, чтобы сделать процесс менее интерактивным, что поможет не создать новый терминал:sudo openconnect --background --protocol=anyconnect -u usernameatwork --authgroup=MFA foo.bar.baz.work
Эти методы потенциально смогут помочь избежать создания нового линейного подключения и сведут к минимуму конфуд в данных о сеансе.
Для ИТ-специалистов такое понимание помогает не только правильно осознавать процесс взаимодействия с VPN, но и управлять системными ресурсами более оптимально, учитывая внутренние процессы, запускаемые при работе с повышенными привилегиями. Тонкое понимание механизмов Linux позволяет более уверенно подходить к настройке и эксплуатации VPN, обеспечивая должный уровень сетевой безопасности и эффективности процессов. Если у вас есть специфические требования к поведению сессии, вы всегда можете исследовать скрипты и настройки PAM или системы в целом, чтобы соответствовать своим уникальным корпоративным политикам или личным предпочтениям.