当前位置: 首页 > 知识库问答 >
问题:

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

潘衡
2023-03-14

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

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

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

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

描述问题的一些步骤:
1。创建一个shell通道,使用JSch登录主机1。使用ssh-valio=servercode>send 这是一个字节流。使用 ServerAliveInterval配置新的ssh,以检查 host2的ssh网络状态。

如果我使用会话,JSch可以识别host1是断开连接的。设置ServerAliveInterval方法,并使用会话对其进行测试。断开连接
问题是,当跳转到host2时,如果只有host2网络通过I'm useServerAliveIntervalconfig实现收支平衡,则无法检查host2。它将保持很长时间(在我的测试中超过1分钟),直到得到一个数据包\u write\u wait:连接到xxx。xxx。xxx。xxx端口22:管道破裂。但是当设置ServerAliveInterval=5 ServerAliveCountMax=2时,我预计会在10秒内收到一些错误消息。

共有1个答案

西门逸仙
2023-03-14

shell是JSCh的黑盒。

JSch不知道你在那里做的任何事情。

如果您想模拟OpenSSHServerAliveInterval指令所做的,请使用Session.setServerAliveInterval

另请参见JSch:如何使会话保持活动状态。

 类似资料:
  • 我想创建一个类的实例,该类可以访问底层的嵌入式derby数据库,并使用声明性服务将该类传递给绑定到数据库包的每个包。 我在derby留档中看到,为多个线程共享一个连接有很多陷阱。所以我在考虑为我正在创建的类的每个实例创建一个连接。由于我只想要一种非常简单的方法来创建多个连接并管理它们,因此在这里使用“MiniConnectionPoolManager”似乎是一个不错的选择。derby的示例代码如下

  • 问题内容: 下面的代码通过SSH在一台计算机上运行grep并打印结果: 我如何一次将5台机器全部置入grep(这样就不会造成重大延迟),而不是将所有这些都放入5个变量中并全部打印出来。 问题答案: 您需要将调用放在单独的线程(或进程中,但这可能会过大),这反过来又要求代码位于函数中(无论如何,这是一个好主意:模块的顶部没有大量代码水平)。 例如: If you had many more than

  • 我正在使用远程ssh扩展从MAC连接到一台Centos7.4机器。在V1.42中一切都很好。我昨天更新到了1.43版本,现在VSCode无法连接。我得到以下错误和它‘挂起’直到我选择关闭远程连接。我切换回了1.42版本,它工作了。还有人看到这个吗?

  • 由于某些原因,我的位图创建不起作用。我找到一只虫子了吗?当我尝试使用矩阵创建一个新位图时,它说我的宽度和高度必须大于0,这毫无意义。 我知道这看起来好像我没有做过任何研究,我做过,但这没有意义。我已经尝试了很多事情,包括将新宽度和新宽度更改为常量,但它仍然不起作用。如果有帮助的话,这是堆栈跟踪 我正在尝试制作一个旋转门户。我想有一个矩阵平移,旋转和缩放,但我没有得到工作。我决定把译文拿出来,只是做

  • 我试图连接到localhost使用ssh键,但我仍然得到"Auth失败"错误。 以下是方法实现: 我使用linux终端创建了我的公钥/私钥对,如下所示: 我没有说任何短语。下一步: 最后 然后当我运行我的程序时,我得到一个错误: 有什么想法吗?我的密钥是OpenSSH类型,从行开始 "-----开始RSA私人密钥-----"

  • 我试图连接到无法通过JSch管理的远程设备,尽管我可以使用具有相同凭据的WinSCP客户端进行连接。 该应用程序是一个基于J2EE的企业应用程序,在JBoss作为7.1.1运行,在Windows服务器上,我试图从Quartz作业连接SFTP服务器。下面是我用来验证SFTP登录的代码。 你能帮我找出这种行为的可能原因吗?