gpt4 book ai didi

java - 使用 SSH 连接进行应用程序间通信

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:32:01 32 4
gpt4 key购买 nike

我想编写一个应用程序,它是一个具有两种连接类型的自定义 SSH 服务器:

  • 一个同步 channel ,客户端在其中输入命令,服务器将返回输出
  • 用户连接并开始读取 IO 的流 channel ,服务器持续发布数据。

我在 Java 中这样做,我认为 Apache Mina SSHD 在正确的工具中。我设法编写了一些用于身份验证的代码(感谢在网上找到的资源)并且可以在我的连接上运行/bin/sh 所以我猜我已经完成了所有设置。问题是,从现在开始我被困住了,因为我不了解这些东西是如何工作的,也不知道 Mina 具体是如何工作的。

基本上我需要访问每个 SSH 连接的输入和输出流,之后我可以自己整理东西,购买什么是正确的方法?

我应该制作自定义 channel 吗?自定义外壳?一组自定义命令?

谁能给我指点有关该主题的资源?

最佳答案

我找到了解决方案:

首先你必须实现一个命令工厂,其完成如下:

class CommandFactory extends Factory[Command] {

override def create():Command = {
new Command() {
def destroy() {}

def setInputStream(in: InputStream) {}

def setErrorStream(err: OutputStream) {}

def setOutputStream(out: OutputStream) {}

def start(env: Environment) {}

def setExitCallback(callback: ExitCallback) {}
}
}
}

然后像这样设置 ssh 服务器:

sshd.setShellFactory(new CommandFactory())

当然,您可以扩展实现以将您需要的任何内容传递给命令。

命令的实现是您定义 shell 行为的地方。

关于java - 使用 SSH 连接进行应用程序间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12745539/

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