User Tools

Site Tools


snippets:shell

Snippets: Shell

Kompatibilität

Sofern nicht anders gekennzeichnet:

Betriebssystem Shell
macOS & GNU/Linux bash & zsh

OpenSSH

  • Neue Private-Keys als Typ ed25519 generieren (Elliptic-Curve-Algorithmus, deshalb trotz kurzer Keys sicherer als rsa mit maximaler Länge)
  • Als Kommentar idealerweise user@hostname setzen, da dieser an den Public-Key angehängt wird und so ein Key auf einem Remote-System einfach einem Client zugeordnet werden kann.

Für moderne Systeme mit OpenSSH kann mit folgendem Befehl ein sicherer Key erzeugt werden. Außer bei Embedded-Distributionen (OpenWRT verwendet z.B. einen minimalen SSH-Server mit weniger Features) hatte ich bisher keine Probleme mit dem folgenden Befehl:

# ed25519-Key mit 100 statt 16 KDF-Runden (deutlich sicherer); Kommentar mit Brnutzer- und Hostname; leerem Passwort und ohne Nachfrage nach einem Dateinamen
ssh-keygen \
	-t ed25519 \
	-a 100 \
	-C "$USER@$(hostname -f)" \
	-N "" \
	-f ~/.ssh/id_ed25519

journald/journalctl

Hinweis: Das systemweite Journal kann nur von root und Mitgliedern der Gruppe systemd-journal angezeigt werden.

Systemlog seit Mitternacht

Folgt dem Journal und zeigt neue Meldungen umgehend an. Es wird nicht automatisch ein Pager (z.B. less) gestartet, stattdessen wird über den Puffer des Terminal-Emulators zurück gescrollt.

journalctl \
	--output=short-iso \
	--no-hostname \
	--since="$(date +%Y-%m-%d) 00:00:00" \
	--no-pager \
	--follow

Log seit Mitternacht für eine einzelne Unit

Wie das vorherige Beispiel, aber auf eine einzelne systemd-Unit beschränken, statt das gesamte System-Log anzuzeigen.

  • Die dazu gekommene Option –service=<unit> akzeptiert jegliche Unit-Typen
  • Das Standard-Suffix .service muss dabei zwar nicht explizit genannt werden, ich persönlich bevorzuge aber den ganzen Unit-Namen, deshalb wird es hier genannt.
journalctl \
	--output=short-iso \
	--no-hostname \
	--since="$(date +%Y-%m-%d) 00:00:00" \
	--no-pager \
	--follow \
	--unit=apache2.service

Unit-Log der aktuellen Stunde

Zeigt das Log einer Unit seit dem Beginn der aktuellen Stunde an. Gegenüber dem vorherigen Beispiel wurde nur die Option –since abgeändert, sodass die Stunde von date gesetzt wird, statt 00.

  • In der Praxis ist oft nicht mehr als die letzten 20-30 Minuten von Relevanz
  • Durch Weglassen der Option –unit kann stattdessen das gesamte System-Log angezeigt werden.
journalctl \
	--output=short-iso \
	--no-hostname \
	--since="$(date +%Y-%m-%d\ %H):00:00" \
	--no-pager \
	--follow \
	--unit=NetworkManager.service
snippets/shell.txt · Last modified: by malte70