Как выполнить общесистемный скрипт при любом входе в систему через ssh (с OpenSSH)?

При любом входе / подключении через ssh (кто-нибудь входит в систему через ssh), есть ли способ выполнить скрипт? Использование OpenSSH сервера.

Сценарий не должен быть изменяем любым пользователем, конечно, так что это должен быть общесистемный сценарий.

Спасибо!

4 ответа

Решение

Если вы хотите сделать это незаметно для пользователя, посмотрите на заменитель системного журнала (например, syslog-ng). Вы можете запустить команду в сообщениях журнала, отправляемых в системный журнал сервером SSH, когда кто-то входит в систему.

Этот подход немного рубиново-голдбергский и зависит от правильной работы системного журнала. YMMV, IMHO, SLATFATF

У вас уже есть скрипт, который выполняется каждый раз, когда кто-то входит в систему: /etc/profile

Вы можете изменить этот скрипт для выполнения любой задачи, которую вы имеете в виду, или сделать так, чтобы он вызывал ваш скрипт напрямую. В производных Debian вы можете просто удалить свой собственный скрипт (заканчивающийся на .sh) в /etc/profile.d и он будет вызван автоматически.

ПРИМЕЧАНИЕ: все, что я только что сказал, относится только к производным оболочки Bourne, как по умолчанию /bin/sh, ash, bash, ksh и т. д. Большинство пользователей придерживаются bash, поэтому приведенные выше инструкции, скорее всего, все, что вам нужно. Другие семейства оболочек используют другие сценарии запуска. Tcsh, например, выполнит /etc/csh.cshrc при входе

Увидеть ForceCommand в sshd_config(5):

Принудительно выполняет команду, указанную ForceCommand,
игнорирование любой команды, предоставленной клиентом, и ~/.ssh/rc, если
подарок. Команда вызывается с использованием оболочки входа пользователя
с опцией -c. Это относится к оболочке, команде или подсистеме
выполнение. Это наиболее полезно внутри блока Match. Команда
изначально предоставленный клиентом доступен в
Переменная окружения SSH_ORIGINAL_COMMAND. Указание команды
of ``internal-sftp'' заставит использовать внутрипроцессный sftp
сервер, который не требует поддержки файлов при использовании с
ChrootDirectory.

Вы можете изменить пользовательскую оболочку так, чтобы при входе в систему выполнялся пользовательский скрипт. Это может быть оболочка по умолчанию для любого пользователя, который в ней нуждается (я бы порекомендовал сохранить учетную запись администратора с bash для решения проблем).

Другие вопросы по тегам