java - 是否可以将 ControlMaster 添加到 JSch 连接?

标签 java ssh jsch

我遇到了需要重用 JSch 的现有 session 的情况。我需要一个 shell channel 和一个 SFTP channel 来共享同一连接。是否可以在 JSch 实现中实现 ControlMaster?如果是这样,我需要设置哪些选项?它会像任何其他 OpenSSH 实现一样吗?

最佳答案

Jsch 支持通过单个 session (到远程 SSH 服务器的 TCP 连接)打开多个 channel 。因此,如果 Jsch session 只是需要在同一程序的不同部分之间共享,那么实现起来并不困难。

OpenSSH ControlMaster 功能允许 ssh 客户端通过控制套接字与外部程序共享其 ssh session 。截至目前,jsch 并不直接支持类似的东西。如果您希望您的 jsch 客户端具有这样的功能,您必须自己实现它。

OpenSSH 有自己的协议(protocol),用于通过 ControlMaster 套接字进行通信。如果您希望您的实现与 OpenSSH 互操作,您可以实现相同的协议(protocol)。该协议(protocol)记录在名为“PROTOCOL.mux”的文件中,该文件包含在 OpenSSH 源代码中。您还可以通过在 Internet 上搜索该名称来在线查找副本。

关于java - 是否可以将 ControlMaster 添加到 JSch 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975099/

相关文章:

bash - 通过 ssh 远程获取脚本

java - 在 Java 中通过 SSH 连接到 MongoDB

java - JSR250 : CommonAnnotations for Java, 2.3:@Resource 方法必须是遵循标准 JavaBeans 约定的 setter

git - 为什么我在 git 上得到 ssh_exchange_identification : Connection closed by remote host?

php - 如何在ssh中使用pid查看正在运行的后台任务

java - 为什么关闭 JSCH Channel 后,SFTP 连接仍然存在?

sftp - JSch session.connect() 与 CoreFTP 挂起

java - 如何在打印的字符串周围添加 ""引号?

java - 有没有办法在函数式接口(interface)中重载抽象方法?

java - 对象引用困惑