Erweiterte SSH-Einstellungen am Server

Version 19.1 von Jonas Mayer am 2022/05/24 09:34

Ab der Puppet-Version 1.5.x kamen weitere SSH-Einstellungen hinzu, die für die Nutzung unter LogoDIDACT brauchbar sein können.

Containerübergreifend nutzbare Einstellungen

Der Speicherort der konfigurierten YAML-Datei gibt den Gültigkeitsbereich der Option am Server vor.

  • Um die Einstellung für alle LXC-Container und den ldhost zu verwenden, müssen die Einstellungen in /etc/logodidact/hiera/custom.yaml abgespeichert werden.
  • Möchten Sie die Einstellungen auf einen einzelnen LXC-Container einschränken, so müssen die Einstellungen in /etc/logodidact/hiera/custom.d/[NameDesContainers].yaml gespeichert werden.
  • Einstellungen für den ldhost selbst müssen in der Datei  /etc/logodidact/hiera/custom.d/ldhost.yaml gespeichert werden.


Festlegen, ob ein Login am Server als root-Benutzer im SSH-Dienst erlaubt ist:

ld_ssh::server::permit_root_login: true / false           # Default = true

Authentifizierung neben der Public-Key Methode auch per Passwort zulassen:

ld_ssh::server::auth_passwd: true / false                 # Default = true

Die Autorisierung von SSH-Schlüsseln zur Anmeldung am Server erfolgt über sogenannte Hiera-Einstellungen im Puppeteer. Standardmäßig ist dieses Anmeldeverfahren (PubkeyAuthentication) dort für den SSH-Dienst aktiviert:

ld_ssh::server::authorize::root::extern: true / false     # Default = true
ld_ssh::server::authorize::root::intern: true / false     # Default = true

Der Public-Key Teil aller SSH-Schlüssel, die zur Anmeldung am Server autorisiert werden sollen, müssen dann in folgenden Verzeichnis im Puppeteer abgelegt werden:

root@puppeteer:~ $ /etc/logodidact/ssh/keys/[USERNAME]/[intern|extern|global]

# Hinweise:
# ---------
#
# * Zur Autorisierung einer SSH-Key Anmeldung für den root-Benutzer muss also "[USERNAME]" im Pfad durch "root" ersetzt werden
#
# * Im letzten Teil des Pfades gibt man vor, ob die SSH-Anmeldung mit dem entsprechenden Key...
#  ... intern = nur für das lokale Netz (10.16.x.x) freigeschaltet werden soll
#  ... extern = nur für Fernzugriffe auf den Server über das Internet freigeschaltet werden soll
#  ... global = von beiden Seiten freigeschaltet werden soll, also für die interne & externe Zone

Für jeden Public-Key einer Person muss eine eigene Datei im oben beschriebenen Verzeichnis abgespeichert werden, die auf die Dateiendung .pub endet.


In Bezug zu länger geöffneten SSH-Sitzungen gibt es einen vordefinierten Timeout, zu dem die Verbindung geschlossen wird und ein automatischer Logout erfolgt.

# Folgende Standard-Einstellungen können bei Bedarf erhöht werden
ld_ssh::server::auto_logout_timeouts:
  ssh: 12h
  console: 8h

Zur Ausführung von Kommandos, die selbst sehr viel Zeit am Server in Anspruch nehmen (z.B. das Kopieren größerer Mengen an Daten), empfiehlt sich die Verwendung einer Screen-Sitzung, damit das Kommando in Hintergrund und losgelöst von der SSH-Verbindung verarbeitet werden kann.

Spezifisch für ldhost

Hinweis: Von einer Anpassung dieser Optionen ist in der Regel abzuraten, dies wird nicht empfohlen!

Die hier beschriebene Option kann im Puppeteer-Container über die YAML-Datei /etc/logodidact/hiera.d/custom.d/ldhost.yaml angepasst werden.

Um zwischen internen und externen SSH-Zugriffen unterscheiden zu können, wurde der SSH-Dienst neben Port 22 zusätzlich an den Port 1212 gebunden. Über die nachfolgende Variable ist es möglich, den verwendeten Port 1212 für den SSH-Dienst in der Zone "extern" zu ändern.

ld_ssh::server::firewall_port: 1212                       # Default-Port

Ergänzend dazu ist eine manuelle Anpassung an der Shorewall rules-Datei für die richtige Zuordnung nötig. Diese Firewall-Regel wird im Artikel "SSH-Keys für Fernzugriff am LD-Server hinzufügen" genauer beschrieben.