【发布时间】:2012-10-16 06:01:58
【问题描述】:
我的问题与此处提出的问题类似: Ant scp task failure
构建失败 com.jcraft.jsch.JSchException: 拒绝 HostKey: ....
我的问题是为什么在我的 knownhosts 文件中找不到密钥?
无论我拥有什么样的 known_hosts 文件,主机密钥都会被拒绝。通过 ssh 连接可以正常工作,并添加相关条目,但可能 jsch 无法读取 OpenSSH 生成的 known_hosts 文件?
Ant 文档提到 knownhosts 文件需要是 SSH2 格式,而不是 SSH1。具有讽刺意味的是,来自 OpenSSH 的 SSH2 格式 known_hosts 文件应该是 ~/.ssh/known_hosts2,但 knownhosts 的默认值是 ~/.ssh/known_hosts。
由 SSH2 创建的已知主机文件位于 ~/.ssh2/knownhosts/,因此将其排除在预期格式之外可能是安全的。到目前为止,我一直无法让 OpenSSH 创建一个 known_hosts2 文件,并且手册页在那里也没有多大帮助。那么文档实际上意味着文件需要采用 SSH2 格式是什么意思?
我尝试了dsa 和rsa 密钥,但都不起作用(都可以使用 OpenSSH)。
我搜索了两天,找到的唯一答案是“set trust="true”。是的,这可以让任务发挥作用,但并非对安全性视而不见。
【问题讨论】:
-
我正在努力解决完全相同的问题。我有一个 known_hosts 文件,该文件适用于早期版本的 Ant(或更高版本,将早期版本的 Jsch 库放在 lib 文件夹中),但我还无法弄清楚更高版本的具体内容在 known_hosts 文件或 knownhosts 目录或其他任何地方。
-
最后我想通了:) 请看下面的答案。
标签: ant ssh build-automation jsch