Błąd `nie można załadować klucza hosta` podczas próby odtworzenia kluczy hosta SSH

13

Próbuję odtworzyć klucze hosta ssh-server.

Mam na to co najmniej dwa sposoby:

  • Z dpkg-rekonfiguruj

    dpkg-reconfigure openssh-server
    

    To działa dobrze, ale nie mogę podać długości klucza. Chcę na przykład 4096 dla klucza RSA.

  • Ręcznie za pomocą ssh-keygen

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

    To odtwarza mi klucze, ale po ponownym uruchomieniu serwera pojawia się następujący komunikat o błędzie :

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

    więc sprawdziłem, co tam jest plik sshd_config:

    HostKey /etc/ssh/ssh_host_rsa_key
    

    pasuje idealnie. Sprawdziłem więc właściciela i prawa do wszystkich moich kluczy

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

    Kiedy usuwam wszystkie klucze i odtwarzam je ponownie dpkg-reconfigure openssh-server, klucze są mniejsze i mają takie same prawa do plików jak wyżej.

Pytanie: Jak korzystać dpkg-reconfigurez keylengh 4096 dla RSA?

Emil Sommer
źródło
Proszę uruchomić sshdw trybie debugowania z wiersza poleceń ( sudo sshd -d), aby uzyskać więcej informacji na temat tej kwestii i zakładać wyjście.
David Foerster
@DavidFoerster To wygląda na dobrą sugestię. Próbowałem odtworzyć problem, tymczasowo przenosząc klucze, tworząc nowe klucze z hasłami, zatrzymując i ponownie uruchamiając ... Nie otrzymuję komunikatu o błędzie PO. Jest to wynik dostaję livewire@za20:/etc/ssh$ sudo sshd -dwyjście sshd re-exec requires execution with an absolute pathInaczej bym zawarte przykład w mojej odpowiedzi :(
LiveWireBT
Przepraszam, to powinno być sudo /usr/sbin/sshd -d. Błąd, który dostałeś, jest dosłownie (choć nie całkiem jasny).
David Foerster
Mimo że zaakceptowana odpowiedź rozwiązuje problem, wciąż zastanawiam się nad ostatnim pytaniem w pierwszym poście: Jak korzystać dpkg-reconfigurez keylength 4096? Czy jest gdzieś plik konfiguracji zawierający te informacje? Rozejrzałem się po bazach danych debconf (wewnątrz /var/cache/debconf/), ale nie znalazłem niczego, co wyglądałoby jak długość klucza.
ph0t0nix

Odpowiedzi:

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

odtwarza mi klucze. ale po ponownym uruchomieniu serwera otrzymuję

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

Tworzysz klucz hosta za pomocą hasła. Czy jest jakieś dostosowanie do odblokowania tego klucza hosta? Jeśli nie, to myślę, że tego należy się spodziewać: skrypt zarządzający usługą uruchamia się, próbuje załadować klucz hosta i kończy się niepowodzeniem. O ile wiem, nie powinieneś tworzyć kluczy hostów chronionych hasłem.

Jeśli chcesz wzmocnić serwer SSH, zalecamy przeczytanie https://stribika.github.io/2015/01/04/secure-secure-shell.html polecenia użytego do utworzenia klucza hosta w tym dokumencie:

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

Ale powinieneś przeczytać cały dokument przed wprowadzeniem jakichkolwiek zmian.

LiveWireBT
źródło
Pracuje. po prostu usuwam hasło myverylongpasshere tutaj. tak przy okazji: naprawdę fajny artykuł do przeczytania. w rzeczywistości openssh pochodzi z Ubuntu-repro w moim przypadku i nie obsługiwał KexAl algorytmów curve25519-sha256 @ libssh.org, diffie-hellman-group-exchange-sha256
Emil Sommer
20

Żadna z powyższych odpowiedzi nie działała dla mnie. Naprawiłem mój system Ubuntu, wykonując następujące czynności:

/usr/bin/ssh-keygen -A
MichaelICE
źródło
1
TO. To jest prawdziwa odpowiedź, co potwierdza strona podręcznika dla ssh-keygen na temat tej flagi „-A”: Dla każdego z typów kluczy (rsa1, rsa, dsa, ecdsa i ed25519), dla których klucze hosta nie istnieją, wygeneruj klucze hosta z domyślną ścieżką do pliku kluczy, pustym hasłem, domyślnymi bitami dla typu klucza i domyślnym komentarzem. Jest to wykorzystywane przez skrypty administracyjne systemu do generowania nowych kluczy hosta.
BoomShadow
1

Po prostu uruchom:

ssh-keygen -t rsa -b 4096

ssh-keygen generuje klucz SSH.

  • -t określa typ klucza do utworzenia
  • -b określa liczbę bitów w kluczu.

Zobacz tę stronę, aby uzyskać więcej informacji.

amrx
źródło
to nie jest odpowiedź. proszę zobaczyć moje pytanie, już to zrobiłem, z odpowiedzią, że nie można załadować klucza hosta.
Emil Sommer
3
@EmilSommer Nie, to jest dokładnie odpowiedź, po prostu brakuje wyjaśnienia (dlaczego pojawia się komunikat o błędzie i co to znaczy).
LiveWireBT