Так как уже не первый раз обращаются, решил сделать простенький скрипт для уведомлений в телеграм о входе по ssh или sftp с указанием логина и ip адреса клиента на базе лог файла /var/log/auth.log и сервиса systemd в ОС Debian 11. Так же по аналогии можете переделать и для другой ОС.
1.Создайте файл `/etc/systemd/system/ssh-telegram.service` с содержимым:
[Unit] Description=SSH Telegram Notification Service After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/ssh-telegram.sh Restart=always [Install] WantedBy=multi-user.target
2.Создайте файл `/usr/local/bin/ssh-telegram.sh` с содержимым:
#!/bin/bash
# Путь к лог-файлу
LOG_FILE="/var/log/auth.log"
TELEGRAM_BOT_TOKEN="<TELEGRAM_BOT_TOKEN>"
TELEGRAM_CHAT_ID="<TELEGRAM_CHAT_ID>"
# Функция отправки данных методом POST
send_data() {
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d chat_id=$TELEGRAM_CHAT_ID \
-d parse_mode=html \
-d text="$1" > /dev/null
}
# Хвост лог-файла
tail -F -n0 $LOG_FILE | while read LINE; do
# Проверяем строку лога на сообщение о входе
if [[ $LINE =~ "Accepted password for" ]]; then
send_data "SSH: $LINE
"
fi
done
3.Сделайте файл `ssh-telegram.sh` исполняемым:
chmod +x /usr/local/bin/ssh-telegram.sh
4.Перезапустите systemd:
systemctl daemon-reload
5.Запустите сервис:
systemctl start ssh-telegram
6.Проверьте, что сервис работает правильно:
systemctl status ssh-telegram
7.Добавьте сервис в автозагрузку:
systemctl enable ssh-telegram
Теперь вы будете получать уведомления о входе по ssh или sftp в телеграм. Замените `<TELEGRAM_BOT_TOKEN>` и `<TELEGRAM_CHAT_ID>` на свой токен бота и ID чата соответственно.