{% 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 %}
Vergleichen Sie den Fingerprint mit einer unabhängigen Quelle -- Konsolenzugang am Gerät, Inventardokumentation --, bevor Sie ihn unten freigeben.
| 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 %}
|
| Adresse | Typ | Fingerprint | Freigegeben | |
|---|---|---|---|---|
| {{ 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 %} |