{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import pill, empty_state, alert, search_box %} {% block page_title %}Host-Schlüssel{% endblock %} {% block page_sub %} {{ targets | length }} Ziele mit SSH-Zugang {%- if open_count %} · {{ open_count }} ohne Freigabe{% endif %} {% endblock %} {% block topbar_extra %}{{ search_box('hostkey-table', 'Gerät, IP, Fingerprint ...') }}{% endblock %} {% block content %} {% if open_count %} {# Der PoE-Neustart hängt am Schlüssel des *Switches*, nicht am Schlüssel des Clients: geschaltet wird der Port auf dem Switch. Der alte Satz warf beides zusammen und liess vermuten, ein Client ohne freigegebenen Schlüssel sei nicht per PoE neu startbar. #} {{ alert('Für ' ~ open_count ~ ' Ziel(e) ist noch kein Schlüssel freigegeben. Wartung und Konsole brechen dort mit "Schlüssel unbekannt" ab -- absichtlich: ein Hintergrundauftrag darf keinen fremden Schlüssel annehmen. Ein PoE-Neustart braucht dagegen den Schlüssel des Switches, nicht den des Clients.', 'warning', 'Freigaben offen') }} {% else %} {{ alert('Für jedes Ziel mit SSH-Zugang liegt ein freigegebener Schlüssel vor.', 'success', 'Vollständig') }} {% endif %} {{ alert('Ein Schlüssel wird in zwei Schritten übernommen: erst auslesen, dann -- nach Vergleich mit einer unabhängigen Quelle -- freigeben. Gespeichert wird nach IP und Port; ändert sich die Adresse eines Geräts, ist erneut freizugeben. Ein *geänderter* Schlüssel wird nie stillschweigend übernommen: das ist der Fall, der bei einem Angriff auftritt.', 'info', 'So funktioniert die Freigabe') }} {% if probed_fingerprint %}
{{ icon('alert', size=18) }}
Gelesener Schlüssel von {{ probed_host }}:{{ probed_port }}
{{ probed_type }} {{ probed_fingerprint }}

Vergleichen Sie den Fingerprint mit einer unabhängigen Quelle -- Konsolenzugang am Gerät, Inventardokumentation --, bevor Sie ihn unten freigeben.

{% endif %}
{{ icon('shield', size=17) }} Ziele
Ohne Freigabe zuerst
{% for row in targets %} {% set may_edit = current_user.has(edit_right[row.kind]) %} {% endfor %}
Ziel Art Adresse Zustand Fingerprint
{{ row.label }} {% if row.kind == 'switch' %}{{ pill('Switch', 'info') }} {% else %}{{ pill('Client', '') }}{% endif %} {{ row.host }}:{{ row.port }} {% if row.trusted %}{{ pill('freigegeben', 'online') }} {% else %}{{ pill('offen', 'danger') }}{% endif %} {% for key in row.host_keys %}
{{ key.key_type }} {{ key.fingerprint }}
{% else %} {% endfor %}
{% if may_edit %}
{% if probed_fingerprint and probed_host == row.host and probed_port == row.port | string %}
{% endif %} {% if row.trusted %}
{% endif %}
{% else %} keine Berechtigung {% endif %}
{% if not targets %} {{ empty_state('Keine Ziele', 'Legen Sie zuerst Clients oder Switche an.', 'shield') }} {% endif %}
{% if orphans %}
{{ icon('alert', size=17) }} Verwaiste Freigaben
Zu diesen Einträgen gibt es kein Ziel mehr -- gelöscht oder mit neuer IP.
{% for row in orphans %} {% endfor %}
AdresseTypFingerprintFreigegeben
{{ row.host }}:{{ row.port }} {{ row.key_type }} {{ row.fingerprint }} {{ row.added_at | dt }} von {{ row.added_by }} {% if current_user.has('devices.edit') or current_user.has('switches.edit') %}
{% endif %}
{% endif %} {% endblock %}