Как выполнить общесистемный скрипт при любом входе в систему через 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 для решения проблем).