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

70 lines
2.4 KiB
Markdown

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