【发布时间】:2012-09-26 13:37:37
【问题描述】:
我想编写一个应用程序,它是具有两种连接类型的自定义 SSH 服务器:
- 同步通道,客户端输入命令,服务器将返回输出
- 用户连接并开始读取IO的流通道,服务器持续发布数据。
我在 Java 中做这件事,我认为 Apache Mina SSHD 是正确的工具。我设法编写了一些用于身份验证的代码(感谢在网上找到的资源),并且可以在我的连接上运行 /bin/sh,所以我猜我已经完成了所有设置。问题是,由于缺乏关于这些东西如何工作以及 Mina 具体如何工作的知识,我从现在开始就被困住了。
基本上我需要访问每个 SSH 连接的输入和输出流,之后我可以自己解决问题,购买什么是正确的方法来获得它?
我应该制作自定义频道吗?自定义外壳?一组自定义命令?
任何人都可以向我指出有关该主题的资源吗?
【问题讨论】:
-
这并不能完全回答你的问题,但我会以不同的方式处理这个问题。我会将 SSH 连接与您的应用程序分开。您是否考虑过为您谈论的两个通道中的每一个打开一个端口,然后如果客户端无法直接访问这些端口,您可以让他们使用 ssh 连接中的“-L”标志通过 ssh 连接隧道这些端口命令?
-
@bohney:+1。更简单、更易于设置和维护。
-
不确定我是否理解,但我基本上是在为我们使用的第三方服务编写一个模拟,所以我在架构选项上有点受限。我也将它集成到 Akka 应用程序中(在 scala 中)
-
客户端实际上已经写好了,使用的是SSH库。
标签: java apache-mina sshd