JSch创建了一个嵌入ssh连接,但ServerAliveInterval不起作用



我想使用JSch作为一个通用的shell交互工具,它真的很有用。

我想创建一个ssh,它是内部JSch通道shell,shell的InputStream和OutStream由我自己维护。

问题是,当我向OutputStream发送命令字符串ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=2 -o StrictHostKeyChecking=no -o ConnectTimeout=10 -T root@xxx.xxx.xxx.xxx -p 22以通过ServerAliveInterval设置保持活动,但它根本不起作用时。当我关闭网络时,新通道将保持1分钟。这一次更多的是在我的配置ServerAliveInterval=5 ServerAliveCountMax=2

JSch是否支持内部ssh连接设置来处理保活检查,例如ServerAliveInterval

更新

描述问题的一些步骤:
1。创建一个shell通道,使用JSch登录host1
2。通过发送作为字节流的命令CCD_ 8来使用到CCD_。使用ServerAliveInterval配置新的ssh,以检查host2的ssh网络状态。

如果我使用Session.setServerAliveInterval方法并用Session.isConnected测试,JSch可以识别出host1是断开的
问题是,如果只有host2网络是盈亏平衡的,则无法检查host2。我在跳到host2时使用ServerAliveInterval配置。它将持续很长时间(在我的测试中超过1分钟),直到获得packet_write_wait: Connection to xxx.xxx.xxx.xxx port 22: Broken pipe。但我预计在设置ServerAliveInterval=5 ServerAliveCountMax=2后不到10秒就会收到一些错误消息。

外壳是JSCh的黑盒。

JSch不知道你在那里做了什么。

如果要模拟OpenSSHServerAliveInterval指令所做的操作,请使用Session.setServerAliveInterval

另请参阅JSch:如何保持会话的活力。

最新更新