@Alghazanth

Как отличить локальную сессию терминала от SSH-сессии?

Есть скрипт, лежащий в /etc/profile.d, который должен выполняться только если была инициирована SSH-сессия, Если же была открыта локальная консоль, то игнорировать содержимое и сразу делать return. Есть какой-то надёжный способ различать эти ситуации? Пока в голову пришло только проверять наличие переменной DISPLAY — в SSH-сессии она не будет определена.
UPD К сожалению, ни один из советов не подошёл, т.к. проверки ломаются при использовании su, это довольно частый сценарий.
  • Вопрос задан
  • 432 просмотра
Пригласить эксперта
Ответы на вопрос 5
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
У ssh-сессии родительский процесс - ssh-сервер (sshd по умолчанию), проверять надо рекурсивно.
Также если ssh-сервер не видел мамонтов, то в начале он задает переменные SSH_CLIENT SSH_TTY SSH_CONNECTION, но естественно ломается при использовании su -.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Проверять терминал по имени:

например консоль:
tty
/dev/tty1


виртуальный терминал:
tty
/dev/pts/1


Соответственно можно просто проверять строку на tty или pts.
Ответ написан
morihaos
@morihaos
На 99% вопросов уже есть ответы в инетке...
Привет,
Думаю, что проще использовать /etc/ssh/sshrc, который и нужен для того, чтобы он выполнялся при входе кого-то по ssh, прописать там команды, вызовы и т.п.
Ответ написан
Комментировать
@MechanID
Админ хостинг провайдера
Я посмотрел на машинах с Centos и Debian:
у ssh сессий есть переменные SSH_CLIENT, SSH_TTY, SSH_CONNECTION
Пусть скрипт проверяет их и продолжает работу только когда они есть, посмотреть все переменные можно командой printenv
Ответ написан
Комментировать
grims
@grims
Не курю
Посмотреть соединения, найти признак по деману "sshd" который установил сессию через терминал pts/Х.
[vis@dhp]# w
 02:01:09 up 10 days, 14:11,  2 users,  load average: 0.97, 0.68, 0.74
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
admin    tty1     :0            22Jan18 10days 40:06   0.00s pam: gdm-password
admin    pts/0    46.11.0.29    17:38    0.00s  0.35s  0.01s sshd: admin [priv]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы