gpt4 book ai didi

java - Jsch 已知主机不工作

转载 作者:行者123 更新时间:2023-12-01 11:18:10 28 4
gpt4 key购买 nike

好吧,我收到 UnknownHostKey 异常。我不想像这篇文章 com.jcraft.jsch.JSchException: UnknownHostKey 那样使用 StrictHostKeyChecking=no 进行解决方法。我希望 JSCH 使用系统 ssh 使用的已知主机文件。是否可以?

最佳答案

是的,这是可能的,在建立 JSCH 连接时,您需要设置knownHosts 文件位置:

示例 JSCH 连接代码:

        JSch jsch = new JSch();
jsch.setKnownHosts(propertyReader.getKnownHosts());
session = jsch.getSession(propertyReader.getUsername(),
propertyReader.getSftpLocation(), 22);
session.setPassword(propertyReader.getPassword());
session.connect();
channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;

if (!StringUtils.isBlank(fileToPut)) {
sftp.put(fileToPut, propertyReader.getSftpDirectory() + "/"
+ newFileName);
} else {
sftp.put(propertyReader.getSftpDirectory() + "/" + newFileName,
ChannelSftp.OVERWRITE);
}

这里的propertyReader是一个类,它设置所有sftp物流的位置已知的主机文件将位于运行 java 程序的用户的 ~/.ssh 目录中:

/home/<username>/.ssh/known_hosts

要将远程 sftp 服务器添加到已知的主机文件中,您可以首先在需要使用同一用户运行 java 进程的服务器上使用常规 sftp 命令执行手动 sftp:

sftp username@host

然后提供密码。或者如果使用 key :

sftp -i KEYFILE.pem username@host

如果连接建立,它会提示您将主机添加到已知主机中,回答"is"。

将主机注册到已知的hosts文件后,使用java程序进行连接。

关于java - Jsch 已知主机不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31545120/

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