Werbung

Home Hardware & Technik Raspberry Pi 3 Raspbian SSH-Host Schlüsseldateien neu erzeugen

Raspbian SSH-Host Schlüsseldateien neu erzeugen

Werbung

Dieser Artikel gehört zu einer Serie, in der beschrieben wird, wie man einen Raspberry Pi 3 Model B ohne Bildschirm so konfiguriert, dass er ohne MicroSD-Karte direkt von USB bootet.

Im Artikel Raspbian Lite auf USB-Laufwerk übertragen wird erklärt, wie Sie Raspbian Lite von der MicroSD-Karte auf ein USB-Laufwerk übertragen und für den Start vorbereiten können.

In diesem Artikel wird gezeigt, wie Sie die SSH-Host Schlüsseldateien nach dem Kopieren von MicroSD-Karte auf ein USB-Laufwerk neu generieren können.

Die Verschlüsselung einer SSH-Verbindung zwischen PuTTY und dem Raspberry Pi 3 (= Host) erfolgt mit aus Sicherheitsgründen einzigartigen Schlüsseldateien.

Welche Sicherheitsgründe?
Gelangen die SSH-Host Schlüsseldateien in fremde Hände, kann mit ihnen eine mitgeschnittene verschlüsselte SSH-Sitzung inklusive Passwörtern entschlüsselt werden.

Im Folgenden erstmal ein paar Grundlagen zu den SSH-Host Schlüsseldateien.

SSH-Host Schlüsseldateien

Die SSH-Host Schlüsseldateien befinden sich im Verzeichnis /etc/ssh und beginnen mit ssh_host*.

Raspbian SSH-Host Schlüsseldateien

Raspbian SSH-Host Schlüsseldateien

Diese Dateien werden beim ersten Start von Raspbian einmalig automatisch neu generiert. Das passiert zu einem Zeitpunkt an dem Datum und Uhrzeit im Raspberry Pi 3 noch nicht aktualisiert sind, deshalb liegt ihr Erstellungsdatum in der Vergangenheit.

Werden die SSH-Host Schlüsseldateien gelöscht, besteht keine Möglichkeit mehr eine SSH-Verbindung zum Raspberry aufzubauen, weil die Verbindung nicht mehr verschlüsselt werden kann. PuTTY meldet dann bei einem Verbindungsversuch Network Error: Software caused connection abort.

PuTTY software caused connection abort: SSH-Host Dateien gelöscht

Die SSH-Host Schlüsseldateien werden von Raspbian auch nicht mehr automatisch neu generiert.

Was passiert beim Kopieren mit den SSH-Host Schlüsseldateien?

Im Artikel Raspbian Lite auf USB-Laufwerk übertragen wird gezeigt wie eine laufende Raspbian Installation von MicroSD-Karte auf ein USB-Laufwerk kopiert werden kann. Dabei werden auch die SSH-Host Schlüsseldateien kopiert.

Das geklonte System auf dem USB-Laufwerk hat damit aber nicht mehr einzigartige SSH-Host Schlüsseldateien.

In der englischen Anleitung von raspberry.org, siehe https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md (in der Version von Ende März 2017), wurden die SSH-Host Schlüsseldateien nach dem Kopieren von MicroSD-Karte auf ein USB-Laufwerk in dem geklonten System mit den folgenden Anweisungen neu erzeugt.

cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc

Alternative 1: SSH-Host Schlüsseldateien manuell neu generieren

Im Prinzip haben Sie aber auch die Möglichkeit nach dem Kopieren von MicroSD-Karte auf USB-Laufwerk die SSH-Host Schlüsseldateien auf der MicroSD-Karte, also im laufenden System manuell neu zu generieren Anschließend haben Sie auch zwei Raspbian Installationen mit einzigartigen SSH-Host Schlüsseldateien.

Mit der folgenden Anweisung löschen Sie die SSH-Host Schlüsseldateien.

sudo rm /etc/ssh/ssh_host_*

Mit der folgenden Anweisung generieren Sie neue einzigartige SSH-Host Schlüsseldateien.

sudo dpkg-reconfigure openssh-server

Raspberry Pi 3: SSH-Schlüssel neu generieren

Beenden Sie PuTTY.

exit

Anschließend starten Sie PuTTY neu und melden sich an Ihrem Raspberry Pi 3 wieder an.

Wenn PuTTY das erste Mal eine SSH-Verbindung zu einem unbekannten System aufbaut oder wenn sich die SSH-Host Schlüsseldateien eines bereits bekannten Systems ändern, erhalten Sie eine Sicherheitswarnung.

PuTTY SSH-Verbindung Raspbian security alert

Wenn Sie nun von PuTTY eine Sicherheitswarnung erhalten, wurden erfolgreich neue einzigartige SSH-Host Schlüsseldateien erzeugt. Bestätigen Sie sie mit Ja um diese Meldung nicht mehr zu erhalten.

Alternative 2: SSH-Schlüsseldateien automatisch generieren über rc.local

Wie eingangs beschrieben, generiert Raspbian gelöschte SSH-Host Schlüsseldateien nicht automatisch neu.

In die Datei /etc/rc.local können Anweisungen eingetragen werden, die automatisch beim Systemstart ausgeführt werden sollen. Hier kann eine Anweisung hinzugefügt werden, die beim Booten das Vorhandensein von SSH-Host Schlüsseldateien prüft und sie neu erzeugt, falls sie fehlen.

Ändern Sie nach dem Kopieren der MicroSD-Karte auf das USB-Laufwerk die Datei rc.local auf dem USB-Laufwerk mit der folgenden Anweisung.

sudo sed -i '/^exit 0/ i \[ ! -f \/etc\/ssh\/ssh_host_rsa_key \] || \[ ! -f \/etc\/ssh\/ssh_host_dsa_key \] || \[ ! -f \/etc\/ssh\/ssh_host_ecdsa_key \] && dpkg-reconfigure openssh-server\n' /mnt/target/etc/rc.local

Was macht diese Anweisung?

Diese Anweisung fügt auf dem eingehängten USB-Laufwerk /mnt/target in die Datei /etc/rc.local am Ende vor der Anweisung exit 0 die folgende Zeile ein.

[ ! -f /etc/ssh/ssh_host_rsa_key ] || [ ! -f /etc/ssh/ssh_host_dsa_key ] || [ ! -f /etc/ssh/ssh_host_ecdsa_key ] && dpkg-reconfigure openssh-server

Wird rc.local bei einem Neustart ausgeführt, bewirkt diese Anweisung folgendes.

  • [ ! -f /etc/ssh/ssh_host_rsa_key ] ||
    wenn die Datei /etc/ssh/ssh_host_rsa_key nicht existiert oder
  • [ ! -f /etc/ssh/ssh_host_dsa_key ] ||
    die Datei /etc/ssh/ssh_host_dsa_key nicht existiert oder
  • [ ! -f /etc/ssh/ssh_host_ecdsa_key ]
    die Datei /etc/ssh/ssh_host_ecdsa_key nicht existiert
  • && dpkg-reconfigure openssh-server
    dann generiere die SSH-Host Schlüsseldateien neu

Nun müssen Sie noch die geklonten SSH-Host Schlüsseldateien auf dem USB-Laufwerk löschen.

sudo rm /mnt/target/etc/ssh/ssh_host*

Die Raspbian-Installation auf dem USB-Laufwerk wird nun bei jedem Neustart prüfen, ob eine der SSH-Host Schlüsseldateien

  • /etc/ssh/ssh_host_rsa_key,
  • /etc/ssh/ssh_host_dsa_key oder
  • /etc/ssh/ssh_host_ecdsa_key

nicht vorhanden ist. Falls das zutrifft werden alle fehlenden SSH-Host Schlüsseldateien neu generiert.