2.4 KiB
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. 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,sudound nicht-interaktive Verbindungen (SCP, SFTP, Monitoring-Tools wie PRTG) werden ignoriert.
Funktionsweise
Das Installationsscript legt eine kleine Datei in /etc/profile.d/ ab:
# /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:
- Ist
$SSH_CONNECTIONgesetzt? (Nur bei SSH-Logins der Fall) - Ist das Hauptscript vorhanden und ausführbar?
- Wenn ja → Hauptscript im Hintergrund ausführen (Login wird nicht verzögert)