Możesz wymusić polecenie dla użytkowników SSH zamiast tego, którego żądają (lub powłoki, jeśli nie wydadzą określonego polecenia). Można to zrobić poprzez określenie tego polecenia z czymś ForceCommand /root/ssh-wrapper
w /etc/ssh/sshd_config
(nie ma znaczenia, gdzie znajduje się skrypt, lub jak to nazywa, po prostu upewnij się, że jest wykonywalny przez wszystkich użytkowników i punktów plików konfiguracja sshd do niego). Musisz także ponownie uruchomić / ponownie załadować sshd
. Oryginalny komenda jest dostępna dla wymuszonym polecenia jako $SSH_ORIGINAL_COMMAND
.
Właśnie zhakowałem ten skrypt razem:
#! /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
Teraz za każdym razem, gdy się loguję lub wylogowuję, głos mówi mi o tym, a wpis dziennika jest zapisywany w syslog. Rejestruje także polecenie. Możesz użyć czegoś takiego jak poniżej, aby „śledzić” użycie sshd:
tailf /var/log/syslog | grep ssh-wrapper
Pamiętaj, że ten skrypt jest w większości nieprzetestowany, więc używaj go na własne ryzyko! ;-)
PS: pamiętaj, że ten skrypt jest uruchamiany jako zalogowany użytkownik, więc nie możesz zrobić wszystkiego, co chcesz, jeśli zmienisz go, aby dodać więcej funkcji ...