Ви можете примусити команду до своїх SSH-користувачів замість того, кого вони запитують (або їх оболонки, якщо вони не дають певної команди). Це можна зробити, вказавши цю команду з чимось на зразок ForceCommand /root/ssh-wrapper
в /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
Тепер кожного разу, коли я входив або виходив, голос повідомляє мені про це, і запис журналу записується в syslog. Він також записує команду. Ви можете використовувати щось на зразок наведеного нижче, щоб "дотримуватися" використання свого sshd:
tailf /var/log/syslog | grep ssh-wrapper
Зверніть увагу, що цей сценарій здебільшого не перевірений, тому використовуйте на свій страх і ризик! ;-)
PS: пам’ятайте, що цей сценарій запускається як користувач, який увійшов у систему, тому ви не можете робити все, що хочете, якщо змінити його, щоб додати більше функцій ...