阻止Karaf在启动时生成新的SSH密钥

时间:2017-03-28 13:07:21

标签: ssh apache-karaf

我注意到Karaf在每次启动时都会生成新的SSH密钥。它使通过ssh连接的自动脚本无效,因为每次都必须手动接受新密钥。

是否可以在每次新安装时停止该行为并仅生成一次新密钥?

更多调试信息:我注意到了,' etc / host.key'没有改变。但是,在停止并启动karaf之后,我收到了消息:

  

ssh -p 8101 localhost -oHostKeyAlgorithms = + ssh-dss

etc/org.apache.karaf.shell.cfg

生成DSA密钥的事实也与来自karaf.log的日志消息不匹配:

  

INFO | sshd-SshServer [20056f77] -nio2-thread-2 |   SimpleGeneratorHostKeyProvider | 48 - org.apache.sshd.core - 1.2.0 |   generateKeyPair(RSA)生成主机密钥 - size = 4096

我的sshPort=8101 sshHost=0.0.0.0 sshRealm=karaf hostKey=${karaf.etc}/host.key algorithm=RSA keySize=4096

foreach ( $tabdocids as $ordered_id ) {
            foreach ( $datas as $doc )
                if ($doc->docid == $ordered_id)
                    $ordered [] = $doc;
}
$datas=$ordered;

在挖掘了我发现的日志后,该host.key文件未正确加载:

  

2017-03-29T13:44:58,977 |警告|   sshd-SshServer [18c17f90] -nio2-thread-1 |   SimpleGeneratorHostKeyProvider | 48 - org.apache.sshd.core - 1.2.0 |   resolveKeyPair(〜/ karaf-docker / apache-karaf-4.1.0 / etc / host.key)失败   (InvalidKeySpecException)要加载:缺少类:   org.bouncycastle.jcajce.provider.asymmetric.rsa.BCRSAPrivateCrtKey   2017-03-29T13:45:00,340 |错误|   sshd-SshServer [18c17f90] -nio2-thread-1 |   SimpleGeneratorHostKeyProvider | 48 - org.apache.sshd.core - 1.2.0 |   覆盖键(〜/ karaf-docker / apache-karaf-4.1.0 / etc / host.key)是   禁用:使用一次性ssh-dss:   SHA256:3yWwxdzoymMvEBYIWMIguQ8G3J7kfapd + avCMoue2R4   2017-03-29T13:45:00,342 |警告|   sshd-SshServer [18c17f90] -nio2-thread-1 | ServerSessionImpl

Apache SSHD使用Java Serialization读取/写入host.key,这可能会导致OSGi出现问题(更糟糕的是,重新部署功能可能会导致文件失效)。

2 个答案:

答案 0 :(得分:0)

当您第一次使用ssh连接时,Karaf会创建服务器密钥。然后将密钥放在karaf home etc / host.key中。因此,只应为每个karaf服务器创建一次密钥。

您也可以在那里提供自己的密钥,以避免创建的开销。

密钥由org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider生成。创建密钥时,您应该在日志中看到此消息:

generateKeyPair(RSA) generating host key - size=4096

答案 1 :(得分:0)

我决定回答我自己的问题,因为我找到了一个不需要讨论karaf实现等问题的解决方案。

问题的原因是因为Karaf模块org.apache.karaf.shell.ssh无法持久存储或从host.key读取生成的密钥,我想它仅针对以下场景进行了测试:

  1. 通过添加行

    使用PEM格式的密钥
      

    hostKeyFormat = PEM

    归档etc/org.apache.karaf.shell.cfg

  2. 使用openssl工具生成密钥:
      

    openssl genrsa -out etc / host.key 4096

  3. 启动后,Karaf将使用openssl生成的密钥,而不是尝试生成自己的密钥。针对karaf 4.1.x进行了测试