gpt4 book ai didi

ant - 用于 Ant scp 和 sshexec 任务的 knownhosts

转载 作者:行者123 更新时间:2023-12-04 20:48:44 25 4
gpt4 key购买 nike

我的问题类似于这里提出的问题:
Ant scp task failure

BUILD FAILED com.jcraft.jsch.JSchException: reject HostKey: ....



我的问题是 为什么在我的 knownhosts 文件中找不到 key ?

无论我拥有什么样的 known_hosts 文件,主机 key 都会被拒绝。通过 ssh 连接工作正常,并添加相关条目,但可能 jsch无法阅读 known_hosts OpenSSH 生成的文件?

Ant 文档提到 knownhosts 文件需要采用 SSH2 格式,而不是 SSH1。具有讽刺意味的是,来自 OpenSSH 的 SSH2 格式 known_hosts 文件应该是 ~/.ssh/known_hosts2 ,但 knownhosts 的默认值是 ~/.ssh/known_hosts .

SSH2 创建的已知主机文件在 ~/.ssh2/knownhosts/ ,因此将其计入预期格式可能是安全的。到目前为止,我一直无法让 OpenSSH 创建一个 known_hosts2文件,手册页也没有太大帮助。那么文档实际上意味着文件需要采用 SSH2 格式吗?

我试过 dsarsa key ,两者都不起作用(都适用于 OpenSSH)。

我已经搜索了两天,我找到的唯一答案是' set trust="true '。是的,这可以使任务正常工作,但并非没有对安全性视而不见。

最佳答案

这是我发现适用于更新版本的 jch 的格式:

[xx.xx.xx.xx]:22 ssh-rsa .......

在旧版本中,它是这样的:
xx.xx.xx.xx ssh-rsa ......

即没有方括号和没有端口号。 (如果您使用的是端口 22,则不确定端口号是否是必需的,但我使用为 SSH 分配了非默认端口的服务器对其进行了测试。而且,如果不明显, xx.xx.xx.xx 应该是 IP 地址服务器的名称,或主机名或其他任何内容。)

我通过获取 JCraft/jsch 库为我生成 known_hosts 文件找到了这种格式。如果您访问 www.jcraft.com您可以下载 jsch 源代码的 zip 文件和一些示例。要么构建源以制作 jar,要么也下载现成的 jar。我解压缩了 zip 下载,然后将 jar 文件放入同一目录中。

有一个 examples包含 KnownHosts.java 的文件夹.您需要编译该文件然后运行它 - 它会询问您的 known_hosts 文件(只需首先在默认位置( ~/.ssh/known_hosts )创建一个空文件并选择该文件。然后它会询问您详细信息以连接到服务器...输入这些,例如 sshusername@xx.xx.xx.xx ,程序将尝试连接,然后为您填写 known_hosts 文件。

为了方便像我这样的 Windows 用户,他们永远不记得如何从命令行执行操作,以下是编译和运行该命令所需的内容 KnownHosts.java文件:

首先,导航到目录(解压后将 jar 文件放入其中,如上所述)。

然后运行:
javac -cp jsch-0.1.49.jar examples/KnownHosts.java
编译KnownHosts.java。进而:
java -cp "examples;jsch-0.1.49.jar" KnownHosts
运行它。按照上面的说明进行操作,您应该有一个可用的 known_hosts 文件。

最后一个注意事项:KnownHosts 程序假定端口为 22。我对其进行了编辑以允许我输入类似 sshusername@xx.xx.xx.xx:8888 的内容。所以我可以指定一个带有自定义端口的服务器,并使其按上述方式工作。在KnownHosts.java 的源代码中,我查找了如下一行:
Session session=jsch.getSession(user, host, 22);
并将其替换为:
int port = 22;
final int colonIndex = host.indexOf(':');
if (colonIndex > -1) {
final String[] split = host.split(":");
host = split[0];
port = Integer.parseInt(split[1]);
}
Session session=jsch.getSession(user, host, port);

然后编译并运行如上。

关于ant - 用于 Ant scp 和 sshexec 任务的 knownhosts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com