尝试重新创建SSH主机密钥时出现错误“无法加载主机密钥”


13

我正在尝试重新创建ssh服务器主机密钥。

我至少有两种方法可以做到这一点:

  • 使用dpkg-reconfigure

    dpkg-reconfigure openssh-server
    

    这可以正常工作,但是我不能给出密钥长度。我想要例如4096作为RSA密钥。

  • 手动使用ssh-keygen

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

    这为我重新创建了密钥,但是在重新启动服务器后,我收到以下错误消息

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

    所以我检查了sshd_config文件中的内容:

    HostKey /etc/ssh/ssh_host_rsa_key
    

    完美匹配。因此,我检查了所有者和我所有密钥的权利

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

    当我删除所有密钥并使用重建它们时dpkg-reconfigure openssh-server,密钥较小,并且具有与上述相同的文件权限。

问题:如何将dpkg-reconfigurekeylengh 4096用于RSA?


sshd从命令行(sudo sshd -d)以调试模式运行,以获取有关该问题的更多信息,然后发布输出。
David Foerster

@DavidFoerster看起来是个好建议。我尝试通过临时移动密钥,使用密码创建新密钥,停止并重新启动来重新创建问题。我没有收到OP的错误消息。这是我得到livewire@za20:/etc/ssh$ sudo sshd -d输出的结果,sshd re-exec requires execution with an absolute path否则我将在答案中包含一个示例:(
LiveWireBT 2015年

抱歉,应该已经sudo /usr/sbin/sshd -d。您得到的错误是字面上的意思(尽管不是很清楚)。
David Foerster

即使已接受的答案解决了问题,但我仍然想知道第一篇文章中的最后一个问题:如何dpkg-reconfigure与密钥长度4096一起使用?是否有包含此信息的配置文件?我环顾了debconf数据库(中的/var/cache/debconf/),但没有发现任何看起来像密钥长度的东西。
ph0t0nix

Answers:


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

重新给我钥匙。但是,重新启动服务器后,我收到了

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

您使用密码创建一个主机密钥。是否有任何自定义来解锁该主机密钥?如果不是,那么我认为这是所期望的:管理服务的脚本启动,尝试加载主机密钥,然后失败。据我所知,您不应该创建受密码保护的主机密钥。

如果您对加强SSH服务器感兴趣,那么我建议阅读https://stribika.github.io/2015/01/04/secure-secure-shell.html用于在该文档中创建主机密钥的命令是:

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

但是,在进行任何更改之前,您应该阅读整个文档。


作品。只是在这里删除myverylongpassword。顺便说一句:真的很不错的文章。实际上,在我的情况下,openssh来自ubuntu-repro,并且不支持KexAlgorithms curve25519-sha256 @ libssh.org,diffie-hellman-group-exchange-sha256
Emil Sommer

20

上面的答案都不适合我。我通过执行以下操作修复了ubuntu系统:

/usr/bin/ssh-keygen -A

1
这个。这是真正的答案,如ssh-keygen的联机帮助页中有关“ -A”标志的确认:对于每个不存在主机密钥的密钥类型(rsa1,rsa,dsa,ecdsa和ed25519),生成带有默认密钥文件路径,空密码短语,密钥类型的默认位和默认注释的主机密钥。系统管理脚本使用它来生成新的主机密钥。
BoomShadow19年

1

只需运行:

ssh-keygen -t rsa -b 4096

ssh-keygen 生成SSH密钥。

  • -t 指定要创建的密钥的类型
  • -b 指定密钥中的位数。

有关更多信息,请参见此页面


这不是答案。请查看我的问题,我已经准备好了,无法加载主机密钥。
埃米尔·索默

3
@EmilSommer不,这就是答案,只是缺少一个解释(为什么会收到错误消息及其含义)。
LiveWireBT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.