Files
ssh-login-notifier/docs/prerequisites.md
Patrick Asmus 6c2a6dc12b Initial Commit
2026-04-26 21:05:42 +02:00

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, 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:

# /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)