
Я хотел бы, как администратор OpenBSD ssh jumphost, используемого несколькими людьми, запускать определенную команду каждый раз, когда любой пользователь подключается через SSH, даже если это просто туннелирование.
Это возможно?
Я пробовал использовать ForceCommand
и , /etc/sshrc
но, похоже, они применяются только тогда, когда у пользователя есть интерактивный сеанс, и не в противном случае.
Поскольку я использую OpenBSD, к сожалению, ничего на основе PAM работать не будет, т.е.Этот ответ на тему Unix и Linux
Скрипт просто запускается sendmail
с помощью whoami
и , $SSH_CONNECTION
чтобы сообщить мне, кто и откуда вошел в систему.
#!/bin/sh
[email protected]
sendmail -F alerts -f $EMAIL root << EOF
Subject: New Login For $1
Message-ID: <$(date +%s)@$(hostname)>
X-Mailer: OpenSMTPD
Content-Type: text/plain
There has been a new login for $1 on $SSH_CONNECTION
EOF
решение1
Вы можете отслеживать /var/log/authlog
и использовать awk
для отправки вам сообщения при каждом совпадении определенной строки:
tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " [email protected] << EOF\nEOF") }'
Конечно, вы можете заменить его /Accepted pubkey/
на другой шаблон, который подходит вашему случаю. Я решил отправлять пустые письма с темой лога, для удобства чтения на MUA, но вы можете предпочесть что-то вроде
system("mail -s New\\ Login [email protected] << EOF\n" $0 "\nEOF")