Вы можете навязать команду своим SSH-пользователям вместо того, который они запрашивают (или их оболочке, если они не дают конкретной команды). Это можно сделать, указав для этой команды что-то вроде ForceCommand /root/ssh-wrapper
in /etc/ssh/sshd_config
(не имеет значения, где находится скрипт или как он называется, просто убедитесь, что он исполняется всеми пользователями, и файл конфигурации sshd указывает на него). Вам также необходимо перезагрузить / перезагрузить sshd
. Исходная команда доступна для форсированной команды как $SSH_ORIGINAL_COMMAND
.
Я только что взломал этот скрипт вместе:
#! /bin/sh
# add logger options when needed
log="logger -t ssh-wrapper"
# find IP address
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
$log $USER login from $ip
espeak "$USER just logged in from $ip" > /dev/null 2>&1
$log command: ${SSH_ORIGINAL_COMMAND:-shell}
${SSH_ORIGINAL_COMMAND:-shell}
$log $USER logout
espeak "$USER just logged out" > /dev/null 2>&1
Теперь каждый раз, когда я вхожу или выхожу из системы, мне сообщают об этом, и запись в журнал записывается в системный журнал. Это также регистрирует команду. Вы можете использовать что-то вроде следующего, чтобы «следовать» вашему использованию sshd:
tailf /var/log/syslog | grep ssh-wrapper
Обратите внимание, что этот скрипт в основном не тестировался, поэтому используйте его на свой страх и риск! ;-)
PS: помните, что этот скрипт запускается как пользователь, который вошел в систему, поэтому вы не можете делать все, что хотите, если вы измените его, чтобы добавить больше функций ...