【发布时间】:2017-08-21 13:55:39
【问题描述】:
我注意到 Karaf 在每次启动时都会不断生成新的 SSH 密钥。它使通过 ssh 连接的自动脚本无用,因为每次都必须手动接受新密钥。
是否可以停止这种行为并在每次新安装时只生成一次新密钥?
更多调试信息:我注意到,'etc/host.key' 没有改变。但是,在停止并启动 karaf 后,我收到以下消息:
ssh -p 8101 localhost -oHostKeyAlgorithms=+ssh-dss
Offending DSA key in ~/.ssh/known_hosts:5
remove with:
ssh-keygen -f "~/.ssh/known_hosts" -R [localhost]:8101
DSA host key for [localhost]:8101 has changed and you have requested strict checking.
Host key verification failed.
生成 DSA 密钥的事实也与来自 karaf.log 的日志消息不匹配:
信息 | sshd-SshServer[20056f77]-nio2-thread-2 | SimpleGeneratorHostKeyProvider | 48 - org.apache.sshd.core - 1.2.0 | generateKeyPair(RSA) 生成主机密钥 - size=4096
我的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: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 序列化读取/写入 host.key,这可能会导致 OSGi 出现问题(甚至更糟糕的是,重新部署功能可能会使文件变得无用)。
【问题讨论】:
-
每次安装只能创建一次密钥。你有什么特殊的环境吗?
-
@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 吗?
标签: ssh apache-karaf