Ssh логин хук?


15

Есть ли способ запустить скрипт / команду каждый раз, когда пользователь подключается с помощью ssh? Может ли он быть настроен глобально (т.е. запускать скрипт при любом входе пользователя)?

Я сталкивался с этим вопросом на Идентике, но ответа пока нет, и все равно хотел бы его узнать.

Ответы:


11

Для всех пользователей или конкретного пользователя? Для одного пользователя, установите его в своем .bashrcфайле; для всех пользователей, проверьте pam_exec .

Если пользователи приходят с sshd, вам нужно добавить следующую строку /etc/pam.d/sshd; другие файлы в зависимости от их источника:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

В целях тестирования модуль включен как optional, так что вы все равно можете войти в систему, если он не работает. После того, как вы убедились, что это работает, вы можете изменить optionalна required. Тогда вход в систему будет невозможен, пока не будет успешно выполнен ваш скрипт-хук.

Примечание. Как всегда, когда вы меняете конфигурацию входа в систему, оставьте резервную копию оболочки в фоновом режиме и проверьте вход в систему с нового терминала.


Спасибо, это выглядит многообещающе. Можете ли вы уточнить немного больше? Я незнаком с этим.
phunehehe

Я полагаю, что я должен добавить session include pam_exec.so seteuid /path/to/scriptв файл /etc/pam.d/system-remote-login. Это верно?
phunehehe

Либо system-remote-loginили sshd, в зависимости от того, как пользователь входит.
Глен Солсберри

Потрясающие! Было бы здорово, если бы вы отредактировали ответ, включив в него информацию (вы знаете, для тех, кто ее ищет).
phunehehe

Обратите внимание на людей погуглить, вы также можете поместить эту строку auth optional pam_exec.so /path/to/my/hook.shв /etc/pam.d/common-authиметь РАМ уведомить вас о любых событиях аутентификации , которые происходят. Эта программа также может отправлять вам push-уведомления: github.com/benjojo/PushAlotAuth
Ник Свитинг

6

есть другой способ, который влияет только на пользователей, использующих ssh, а не локальные (что может быть лучше в экстренных ситуациях)

смотрите фрагменты со страницы руководства ssh ниже.

в этом случае пользователи обычно могут сами изменять файлы (немного похоже на .bashrc)

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

и это глобально и не может быть изменено обычным пользователем

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

2
Но / etc / sshrc будет выполняться только в том случае, если у пользователя нет собственного ~ / .ssh / rc, поэтому этот пользователь может его обойти
isevcik

2
@isevcik, это только если PermitUserRC установлен на «да» в /etc/ssh/sshd_config(см. man sshd_configподробности)
jeremysprofile
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.