停止Karaf在启动时生成新的SSH密钥
我注意到Karaf在每次启动时都会不断生成新的SSH密钥。它使通过ssh连接的自动脚本变得无用,因为每次都必须手动接受新密钥 是否可以停止这种行为,并在每次新安装时仅生成一次新密钥 更多调试信息:我注意到,'etc/host.key'没有改变。但是,在停止和启动karaf后,我得到了以下信息: ssh-p8101localhost-oHostKeyAlgorithms=+ssh-dss 生成DSA密钥的事实与karaf.log中的日志消息也不匹配: 信息| sshd SshServer[20056f77]-nio2-thread-2| SimpleGeneratorHostKeyProvider | 48-org.apache.sshd.core-1.2.0| generateKeyPair(RSA)生成主机密钥-大小=4096 My停止Karaf在启动时生成新的SSH密钥,ssh,apache-karaf,Ssh,Apache Karaf,我注意到Karaf在每次启动时都会不断生成新的SSH密钥。它使通过ssh连接的自动脚本变得无用,因为每次都必须手动接受新密钥 是否可以停止这种行为,并在每次新安装时仅生成一次新密钥 更多调试信息:我注意到,'etc/host.key'没有改变。但是,在停止和启动karaf后,我得到了以下信息: ssh-p8101localhost-oHostKeyAlgorithms=+ssh-dss 生成DSA密钥的事实与karaf.log中的日志消息也不匹配: 信息| sshd SshServer[2005
etc/org.apache.karaf.shell.cfg
:
sshPort=8101
sshHost=0.0.0.0
sshRealm=karaf
hostKey=${karaf.etc}/host.key
algorithm=RSA
keySize=4096
在查看日志后,我发现host.key文件没有正确加载:
2017-03-29T13:44:58977 |警告|
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.asymetric.rsa.BCRSAPrivateCrtKey
2017-03-29T13:45:00340 |错误|
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:00342 |警告|
sshd SshServer[18c17f90]-nio2-thread-1 | ServerSessionImpl
Apache SSHD使用Java序列化读取/写入host.key,这可能会导致OSGi出现问题(更糟糕的是,重新部署功能可能会使文件变得无用)。Karaf在您首次使用ssh连接时创建服务器密钥。然后,它会将钥匙放入karaf home etc/host.key中。因此,每个karaf服务器只应创建一次密钥 您还可以在那里提供自己的密钥,以避免创建的开销 密钥由org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider生成。创建密钥时,您应该在日志中看到以下消息:
generateKeyPair(RSA) generating host key - size=4096
我决定回答我自己的问题,因为我找到了一个解决方案,它不需要涉及到关于karaf实现等的讨论 问题的原因是因为Karaf模块
org.apache.Karaf.shell.ssh
无法持久化,或者无法从host.key
读取生成的密钥,我想它只针对以下场景进行了测试:
etc/org.apache.karaf.shell.cfg
openssl
工具生成密钥:
openssl genrsa-out etc/host.key 4096
启动后,Karaf将使用openssl生成的密钥,而不是尝试生成自己的密钥。根据karaf 4.1.x进行测试每次安装只能创建一次密钥。你有什么特殊的环境吗?@ChristianSchneider我在Ubuntu x86_64上使用4.1.0版,使用Oracle Java 1.8你能试着用ssh-p 8101连接吗karaf@localhost? .. 奇怪的是,我刚刚尝试使用您的命令,但仍然正确创建了我的密钥。@ChristianSchneider没有-o参数,我得到错误:“无法与::1端口8101协商:找不到匹配的主机密钥类型。他们的报价:ssh dss”我没有给出用户名,因为使用了etc/keys.properties中的密钥,但是karaf@localhost给我同样的错误消息。听起来你的ssh客户端不接受RSA。能否尝试将shell.cfg算法从RSA更改为DSA?因此不应覆盖此密钥?如果是,系统的哪个部分对此负责?是否有我应该查找的特定日志消息?是的。密钥只能创建一次。在答案中添加了更多信息。我已编辑了我的问题。看起来host.key被忽略了,其他东西正在启动时生成SSH密钥……缺少类:org.bouncycastle.jcajce.provider.asymetric.rsa.bcrsaprovatecrtkey谁负责提供该类:JRE环境、Karaf或特定Karaf功能?您从哪里得到此错误?在我的系统中,karaf系统中不存在此包。
generateKeyPair(RSA) generating host key - size=4096