Fehler "Hostschlüssel konnte nicht geladen werden" beim Versuch, SSH-Hostschlüssel neu zu erstellen

13

Ich versuche, die ssh-Server-Hostschlüssel neu zu erstellen.

Ich habe mindestens zwei Möglichkeiten, dies zu tun:

  • Mit dpkg-neu konfigurieren

    dpkg-reconfigure openssh-server
    

    Das funktioniert gut, aber ich kann die Schlüssellänge dann nicht angeben. Ich möchte zum Beispiel 4096 für den RSA-Schlüssel.

  • Manuell mit ssh-keygen

    sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N 'myverylongpasswordhere' -b 4096 -t rsa
    

    Dadurch werden mir die Schlüssel neu erstellt, aber nach dem Neustart des Servers wird die folgende Fehlermeldung angezeigt :

    could not load host key: /etc/ssh/ssh_host_rsa_key
    

    Also habe ich die Datei sshd_config überprüft, was dort drin ist:

    HostKey /etc/ssh/ssh_host_rsa_key
    

    passt perfekt. Also habe ich den Besitzer und die Rechte an allen meinen Schlüsseln überprüft

    -rw------- 1 root root 3326 Mär 24 08:57 ssh_host_rsa_key
    

    Wenn ich alle Schlüssel entferne und mit neu erstelle dpkg-reconfigure openssh-server, sind die Schlüssel kleiner und haben die gleichen Dateirechte wie oben.

Frage: Wie kann ich dpkg-reconfiguremit keylengh 4096 für RSA verwenden?

Emil Sommer
quelle
Bitte führen Sie den sshdDebug-Modus über die Befehlszeile ( sudo sshd -d) aus, um weitere Informationen zu diesem Problem zu erhalten, und veröffentlichen Sie die Ausgabe.
David Foerster
@ DavidFoerster Das sieht nach einem guten Vorschlag aus. Ich habe versucht, das Problem neu zu erstellen, indem ich meine Schlüssel vorübergehend verschoben, neue Schlüssel mit Kennwörtern erstellt, angehalten und neu gestartet habe. Ich erhalte keine Fehlermeldung des OP. Dies ist das Ergebnis , das ich bekommen livewire@za20:/etc/ssh$ sudo sshd -dAusgabe sshd re-exec requires execution with an absolute pathSonst würde ich ein Beispiel in meiner Antwort enthalten haben :(
LiveWireBT
Entschuldigung, das hätte sein sollen sudo /usr/sbin/sshd -d. Der Fehler, den Sie erhalten haben, ist wörtlich gemeint (wenn auch nicht ganz klar).
David Foerster
Obwohl die akzeptierte Antwort das Problem löst, wundere ich mich immer noch über die letzte Frage im ersten Beitrag: Wie kann ich sie dpkg-reconfiguremit der Schlüssellänge 4096 verwenden? Gibt es irgendwo eine Konfigurationsdatei, die diese Informationen enthält? Ich habe mich in den Debconf-Datenbanken (in /var/cache/debconf/) umgesehen, aber nichts gefunden, was der Schlüssellänge ähnelte.
Ph0t0nix

Antworten:

8
sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N 'myverylongpasswordhere' -b 4096 -t rsa

erstellt mir die Schlüssel neu. aber nach dem Neustart des Servers erhalte ich

could not load host key: /etc/ssh/ssh_host_rsa_key

Sie erstellen einen Hostschlüssel mit einem Passwort. Gibt es Anpassungen, um diesen Hostschlüssel freizuschalten? Wenn nicht, ist dies meiner Meinung nach zu erwarten: Das Skript, das den Dienst verwaltet, wird gestartet, versucht, den Hostschlüssel zu laden, und schlägt fehl. Soweit ich weiß, sollten Sie keine mit Passwörtern geschützten Hostschlüssel erstellen.

Wenn Sie daran interessiert sind, Ihren SSH-Server zu härten, empfehlen wir Ihnen, https://stribika.github.io/2015/01/04/secure-secure-shell.html zu lesen. Der Befehl zum Erstellen des Hostschlüssels in diesem Dokument lautet:

ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key

Sie sollten jedoch das gesamte Dokument lesen, bevor Sie Änderungen vornehmen.

LiveWireBT
quelle
funktioniert. Entfernen Sie einfach das myverylongpasswordhere. übrigens: wirklich schöner Artikel zum Lesen. Tatsächlich kommt openssh in meinem Fall von Ubuntu-Repro und hat KexAlgorithms Curve25519-sha256 @ libssh.org, Diffie-Hellman-Group-Exchange-Sha256
Emil Sommer
19

Keine der obigen Antworten hat bei mir funktioniert. Ich habe mein Ubuntu-System folgendermaßen repariert:

/usr/bin/ssh-keygen -A
MichaelICE
quelle
1
DIES. Dies ist die eigentliche Antwort, die von der Manpage für ssh-keygen zu diesem "-A" -Flag bestätigt wurde: Generieren Sie für jeden der Schlüsseltypen (rsa1, rsa, dsa, ecdsa und ed25519), für die keine Hostschlüssel vorhanden sind, die Hostschlüssel mit dem Standardpfad der Schlüsseldatei, einer leeren Passphrase, Standardbits für den Schlüsseltyp und einem Standardkommentar. Dies wird von Systemverwaltungsskripten verwendet, um neue Hostschlüssel zu generieren.
BoomShadow
1

Einfach ausführen:

ssh-keygen -t rsa -b 4096

ssh-keygen generiert einen SSH-Schlüssel.

  • -t Gibt den Typ des zu erstellenden Schlüssels an
  • -b Gibt die Anzahl der Bits im Schlüssel an.

Weitere Informationen finden Sie auf dieser Seite .

amrx
quelle
Das ist nicht die Antwort. Bitte sehen Sie meine Frage, ich habe dies bereits getan, mit dem Ergebnis, dass der Hostschlüssel nicht geladen werden konnte.
Emil Sommer
3
@EmilSommer Nein, genau das ist die Antwort, es fehlt nur eine Erklärung (warum Sie die Fehlermeldung erhalten und was sie bedeutet).
LiveWireBT