Ssh гачок для входу?


15

Чи є спосіб запустити скрипт / команду щоразу, коли користувач підключається за допомогою ssh? Чи можна його налаштувати глобально (тобто запустити сценарій, коли будь-який користувач увійде)?

Я натрапив на це питання на Identica, але відповіді ще немає, і я хотів би це знати.

Відповіді:


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залежно від того, як користувач заходить.
Glen Solsberry

Дивовижно! Було б чудово, якби ви відредагували відповідь, щоб включити інформацію (знаєте, для інших, хто її шукає).
phunehehe

Зверніть увагу на людей погуглити, ви також можете помістити цей рядок auth optional pam_exec.so /path/to/my/hook.shв /etc/pam.d/common-authмати РАМ повідомити вас про будь-які події аутентифікації , які відбуваються. Ця програма також може надсилати вам push-повідомлення: github.com/benjojo/PushAlotAuth
Nick Sweeting

6

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

дивіться фрагменти зі сторінки ssh man нижче.

в цьому випадку користувачі зазвичай можуть змінювати самі файли (трохи як .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.