【问题标题】:SSH Connection to remote Linux server but without using 3rd party LibSSH 连接到远程 Linux 服务器但不使用 3rd 方 Lib
【发布时间】:2015-05-10 06:15:18
【问题描述】:

我正在尝试为从 Windows 连接到远程 Linux 服务器的客户端制作一个小型 Java 实用程序,并将监控结果提供给 Java 文本视图框架(基本上在队列管理器和空间使用情况上运行一些基本命令并将输出保存到文件或返回 JAVA 程序)。

但问题是我不能使用任何第三方库,例如 Jsch 或 Ganymed。

我还有其他方法可以完成这项工作吗?

没有编写任何代码,因为我不确定没有这些库是否可以完成。

【问题讨论】:

  • 为什么不能使用那些库?
  • 我的客户有不使用第三方库的非常严格的政策。至少不会,除非它绝对有必要,而且要获得批准并将其下载到安全的客户端网络是一个漫长的过程。
  • 你的客户是白痴。欢迎你告诉他这件事。如果你想参考,我在这里。
  • 感觉是相互的,我的朋友,但要谋生却无法帮助它:)
  • 是否有固定的命令集(我的意思是命令不会改变)?您是否有权访问 linux 在 linux box 上创建脚本?

标签: java linux ssh


【解决方案1】:

SSH 不是一个简单的协议,它的实现也不是一个简单的任务。如果你在 Linux 上,你可以像运行 java 中的任何外部进程一样运行 ssh 命令行。但是你在窗户上。因此,您可以为 windows 安装 ssh(有几种实现方式),然后从 java 运行命令行。这将起作用,但需要先决条件,并且确实也需要使用第 3 方。

另一种方法是使用一个可用的开源库并将其与您的代码打包在一起,或者只是将其源代码合并到您的项目中(如果您不违反许可协议)。显然,这并不意味着您不使用 3rd 方,而只是隐藏这张脸。但是,可以要求不使用第 3 方的客户应该足够愚蠢,以至于无法检测到您的诡计。

顺便说一句,为了安全起见,您可以将开源项目作为源,更改其包名称并将其与您的项目一起编译。在这种情况下,真的很难抓住你。

底线:祝你好运。

【讨论】:

  • 所以我可以从您的回答中看出,我需要研究从安装在 Windows 上的第三方客户端(例如 Putty 或 ssh 客户端)执行的命令?
  • 这是可能的解决方案之一。 (恕我直言,不是最好的)。
【解决方案2】:

由于您可以访问 linux 机器并且您想要执行一系列命令,因此您根本不必使用 ssh 连接。在 linux box 上写一个脚本并保存。要执行此脚本,请编写一个程序(我们将其命名为“executor”),它将启动一个脚本并获取它的输出。从 Windows 上的 Java 应用程序连接到位于 linux 上的“执行程序”程序(而不是通过 ssh 直接运行脚本)。

您的执行人可以如下所述:

  • 只是您的脚本在 linux 上的 apache 服务器上作为 cgi-bin 程序运行 - 这样您就可以从 java 应用程序连接到它,就像您使用 java 下载任何网页一样(查找 HttpUrlConnection 类的使用示例)
  • 另一个 java 应用程序 - 寻找 java 应用程序之间的通信方式(例如 RMI)
  • ...实际上它可以是任何可以执行 linux 脚本并且您可以使用比 ssh 更简单的协议与之交谈的东西...

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2022-06-27
    • 2021-05-18
    • 2012-11-26
    • 2015-10-09
    • 1970-01-01
    相关资源
    最近更新 更多