O erro `não pôde carregar a chave do host` ao tentar recriar as chaves do host SSH

13

Estou tentando recriar as chaves de host do servidor ssh.

Eu tenho pelo menos duas maneiras de fazer isso:

  • Com o dpkg-reconfigure

    dpkg-reconfigure openssh-server
    

    Isso funciona bem, mas não posso fornecer o comprimento da chave então. Eu quero, por exemplo, 4096 para a chave RSA.

  • Manualmente com ssh-keygen

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

    Isso me recria as chaves, mas depois de reiniciar o servidor, recebo a seguinte mensagem de erro :

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

    então eu verifiquei o arquivo sshd_config que está lá:

    HostKey /etc/ssh/ssh_host_rsa_key
    

    combina perfeitamente. Então, verifiquei o proprietário e os direitos de todas as minhas chaves

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

    Quando eu removo todas as chaves e as recria dpkg-reconfigure openssh-server, as chaves são menores e têm os mesmos direitos de arquivo como acima.

Pergunta: Como posso usar o dpkg-reconfigurekeylengh 4096 para RSA?

Emil Sommer
fonte
Execute sshdno modo de depuração na linha de comando ( sudo sshd -d) para obter mais informações sobre o problema e publique a saída.
David Foerster
@DavidFoerster Isso parece uma boa sugestão. Tentei recriar o problema movendo minhas chaves temporariamente, criando novas chaves com senhas, parando e reiniciando ... Não recebo a mensagem de erro do OP. Este é o resultado que eu recebo de livewire@za20:/etc/ssh$ sudo sshd -dsaída sshd re-exec requires execution with an absolute pathCaso contrário, eu teria incluído um exemplo na minha resposta :(
LiveWireBT
Desculpe, deveria ter sido sudo /usr/sbin/sshd -d. O erro que você recebeu foi feito literalmente (embora não seja muito claro).
precisa
Embora a resposta aceita resolva o problema, ainda estou me perguntando sobre a pergunta final no primeiro post: Como posso usar o dpkg-reconfigurecomprimento de chave 4096? Existe um arquivo de configuração em algum lugar que contenha essas informações? Eu olhei em volta nos bancos de dados debconf (in /var/cache/debconf/), mas não encontrei nada parecido com o comprimento da chave.
Ph0t0nix 21/03

Respostas:

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

me recria as chaves. mas, depois de reiniciar o servidor, eu recebo

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

Você cria uma chave de host com uma senha. Existe alguma personalização para desbloquear essa chave do host? Caso contrário, acho que é o que se espera: o script que gerencia o serviço é iniciado, tenta carregar a chave do host e falha. Tanto quanto sei, você não deve criar chaves de host protegidas por senhas.

Se você estiver interessado em proteger seu servidor SSH, recomendo ler https://stribika.github.io/2015/01/04/secure-secure-shell.html o comando usado para criar a chave do host nesse documento é:

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

Mas você deve ler o documento inteiro antes de fazer alterações.

LiveWireBT
fonte
trabalho. apenas removendo o myverylongpasswordaqui. a propósito: artigo muito bom de ler. na verdade openssh vem do ubuntu-repro no meu caso, e não apoiar KexAlgorithms curve25519-sha256 @ libssh.org, Diffie-Hellman-group-exchange-sha256
Emil Sommer
20

Nenhuma das respostas acima funcionou para mim. Corrigi o meu sistema ubuntu fazendo o seguinte:

/usr/bin/ssh-keygen -A
MichaelICE
fonte
1
ESTA. Esta é a resposta real, conforme confirmado pela página de manual do ssh-keygen sobre o sinalizador "-A": Para cada um dos tipos de chave (rsa1, rsa, dsa, ecdsa e ed25519) para os quais não existem chaves do host, gere o chaves do host com o caminho padrão do arquivo-chave, uma senha vazia, bits padrão para o tipo de chave e comentário padrão. Isso é usado pelos scripts de administração do sistema para gerar novas chaves do host.
BoomShadow
1

Basta executar:

ssh-keygen -t rsa -b 4096

ssh-keygen gera uma chave SSH.

  • -t especifica o tipo de chave a ser criada
  • -b especifica o número de bits na chave.

Veja esta página para mais informações.

amrx
fonte
Esta não é a resposta. por favor, veja minha pergunta, eu já fiz isso, com o resultado de que a chave do host não pôde ser carregada.
Emil Sommer
3
@EmilSommer Não, essa é exatamente a resposta, faltando apenas uma explicação (por que você recebe a mensagem de erro e o que ela significa).
LiveWireBT