# Voraussetzungen ## Betriebssystem - Debian 11+ (Bullseye oder neuer) - Ubuntu 20.04+ - Andere Debian-basierte Distributionen sollten ebenfalls funktionieren Architektur: x64 (amd64) und ARM (arm64/armhf) werden unterstützt. ## Abhängigkeiten ### Pflicht | Paket | Zweck | Prüfung | |---|---|---| | `curl` | ntfy-Benachrichtigungen und Geo-Lookup | `command -v curl` | > Das Installationsscript installiert fehlende Pflicht-Abhängigkeiten automatisch. ### Optional (für E-Mail) Mindestens **eines** der folgenden Mail-Tools muss installiert und konfiguriert sein: | Tool | Paket | Anmerkung | |---|---|---| | `mail` | `mailutils` oder `bsd-mailx` | Am weitesten verbreitet | | `msmtp` | `msmtp` + `msmtp-mta` | Leichtgewichtig, gut für Relay | | `sendmail` | `postfix` oder `sendmail` | Vollständiger MTA | Das Script erkennt automatisch welches Tool verfügbar ist (Reihenfolge: mail → sendmail → msmtp). ### Optional (für Geo-Location) Die Geo-Location nutzt die kostenlose API von [ip-api.com](http://ip-api.com). Dafür ist keine Registrierung oder API-Key nötig. **Einschränkungen:** - Maximal 45 Anfragen pro Minute - Nur für nicht-kommerzielle Nutzung - Funktioniert nur mit öffentlichen IPs (lokale IPs wie 192.168.x.x liefern kein Ergebnis) Die Geo-Location kann in der `config.conf` deaktiviert werden (`GEO_LOOKUP=false`). ## Shell-Kompatibilität Das Script wird über `/etc/profile.d/` eingebunden und bei jedem interaktiven Login ausgeführt. | Shell | Unterstützt | Mechanismus | |---|---|---| | Bash | Ja | `/etc/profile.d/` wird nativ geladen | | Zsh (oh-my-zsh) | Ja | `/etc/zsh/zprofile` sourct `/etc/profile` auf Debian/Ubuntu | | Sh / Dash | Ja | `/etc/profile.d/` wird nativ geladen | | Fish | Nein | Fish sourct `/etc/profile` nicht | > **Hinweis:** Nur SSH-Verbindungen lösen eine Benachrichtigung aus. Lokale Logins, `su`, `sudo` und nicht-interaktive Verbindungen (SCP, SFTP, Monitoring-Tools wie PRTG) werden ignoriert. ## Funktionsweise Das Installationsscript legt eine kleine Datei in `/etc/profile.d/` ab: ```bash # /etc/profile.d/ssh-login-notify.sh [ -n "$SSH_CONNECTION" ] && [ -x /opt/ssh-login-notifier/ssh-login-notify.sh ] && . /opt/ssh-login-notifier/ssh-login-notify.sh ``` Diese Zeile prüft: 1. Ist `$SSH_CONNECTION` gesetzt? (Nur bei SSH-Logins der Fall) 2. Ist das Hauptscript vorhanden und ausführbar? 3. Wenn ja → Hauptscript im Hintergrund ausführen (Login wird nicht verzögert)