由于 SocketTimeoutException,如何增加 apache SSHD 的 scpClient 的 ChannelOutputStream 的等待超时?

How can increase the wait timeout for ChannelOutputStream for scpClient of apache SSHD because of SocketTimeoutException?

使用apache SSHD scp客户端从本地拷贝文件到远程时,出现如下错误:

flush(ChannelOutputStream[ChannelExec[id=0, recipient=0]-ClientSessionImpl[uxxxxxx@Hostname.domain.com/192.163.23.68:45018]] SSH_MSG_CHANNEL_DATA) failed (SocketTimeoutException) to wait for space of len=24576: waitForCondition(Window[client/remote](ChannelExec[id=0, recipient=0]-ClientSessionImpl[uxxxxxx@Hostname.domain.com/192.163.23.68:45018])) timeout exceeded: 30000

这是我设置 SSHServer 和 ScpClient 的方法:

此 SCPClient 在 linux 主机中 运行,linux 和 windows 主机中有多个 SSHServers 运行。

我使用这个 SCPClient 将文件复制到 linux 和赢得 SSHServers。我正在做的是创建大约 20 个奇怪的 akka actor,它们负责复制到相应的远程主机,这些主机是 win 和 linux 的组合。所以这确实在复制时给本地主机带来了一些压力。

但是,只有在复制到 SSHServer 为 运行 的某些 WIN 服务器时才会出现此错误。

我确实注意到复制速度很慢,但我不确定到底是什么问题以及如何解决它?

我有一个模糊的想法,它必须用这个参数做一些事情:

https://github.com/apache/mina-sshd/blob/sshd-2.5.0/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java#L43

但是我不确定在创建客户端时在哪里可以配置它?

任何指点都会有所帮助。

我们可以使用 PropertyResolverUtils 来更新任何配置的属性

PropertyResolverUtils.updateProperty(sshClient, ChannelOutputStream.WAIT_FOR_SPACE_TIMEOUT, 120000);