gpt4 book ai didi

java - JSch SFTP 代码在传输文件时挂起

转载 作者:行者123 更新时间:2023-11-30 05:43:38 27 4
gpt4 key购买 nike

我的任务是将一些文件从服务器复制到本地,我搜索了很多有关连接库的信息并找到了 JSch。我使用了下面的代码,但是读取或移动文件花费了太多时间。不知道好不好用。

JSch jsch = new JSch();
Session session = null;
try {
// set up session
session = jsch.getSession("userName","hostIP");
// use private key instead of username/password
session.setConfig(
"PreferredAuthentications",
"publickey,gssapi-with-mic,keyboard-interactive,password");
jsch.addIdentity("***.ppk");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();

// copy remote log file to localhost.
ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
channelSftp.connect();
channelSftp.setInputStream(System.in);
channelSftp.setOutputStream(System.out);
System.out.println("shell channel connected....");

ChannelSftp c = (ChannelSftp) channelSftp;

System.out.println("done");
channelSftp.get("report.xml", "C:\\Users\\akrishnan");
channelSftp.exit();

} catch (Exception e) {
e.printStackTrace();
} finally {
session.disconnect();
}

是否有任何库可以让我使用私钥文件 (**.ppk) 从 Java 代码连接服务器?

最佳答案

这很可能是导致挂起的原因:

channelSftp.setInputStream(System.in);
channelSftp.setOutputStream(System.out);

对“sftp” channel 执行此操作会破坏一切。这个不成立。只需删除这两行即可。

查看官方JSch SFTP example – 没有这样的电话。

有关使用 JSch 进行文件传输的正确代码,请参阅: SFTP file transfer using Java JSch .

<小时/>

强制警告:请勿使用 StrictHostKeyChecking=no 盲目接受所有主机 key 。这是一个安全缺陷。您失去了针对 MITM attacks 的保护.

有关正确(且安全)的方法,请参阅:
How to resolve Java UnknownHostKey, while using JSch SFTP library?

关于java - JSch SFTP 代码在传输文件时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55225735/

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