java - Java中的多级SSH登录

标签 java authentication ssh jsch multi-level

我目前正在使用 JSch 作为连接到远程服务器的库。在其中一个场景中,我应该能够通过 server1 登录到 server2。也就是说,我应该首先登录到 server1,然后 ssh 到另一台服务器(server2)并执行我的命令。此外,有时我应该能够从 server2 连接到 server3。

所以,基本上,我正在寻找一种建立多级 ssh 连接的方法,但我不知道如何在 Java 中处理该连接,因为我无法在 session 的每个 Exec channel 中执行多个命令。

任何见解都将受到赞赏。

谢谢, 礼萨

最佳答案

因此,您已经可以毫无问题地通过 SSH 连接到 server1,并且您熟悉如何发送命令以在该服务器上运行。

这只是服务器层的递归问题,就像俄罗斯娃娃一样。假设您要在 server2 上运行的命令是 ls(尽管实际命令不会影响此示例)。然后,如果您已经登录到 server1,则可以运行此命令

$ ssh server2 ls

对吗?

我们拥有解决方案的两部分,因为您已经知道如何在登录主机时运行命令。通过 SSH 连接到服务器 1 并运行该命令,您就可以进行多级登录了。

要将其扩展到三个(或更多)主机,其想法是相同的。如果您已经登录到 server2 并想要运行该命令,您可以运行

$ ssh server3 ls

所以如果你在服务器 1 上,你会运行

$ ssh server2 ssh server3 ls

因此你的总体命令是

$ ssh server1 ssh server2 ssh server3 ls

此时我认为很清楚如何将其扩展到任意级别......:-)

关于java - Java中的多级SSH登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4163638/

相关文章:

Java异常弹出窗口

android - android : No such file or directory 上的 Rsync 和 ssh

R SSH 隧道 MySQL

.net - 在 WebRequest 中强制进行基本身份验证

linux - shell 初始化 : error retrieving current directory: getcwd -- The usual fixes do not wor

java - Errai Jax-RS 不发射

java - Camel bean方法在另一个线程上运行

java - 如何将规则转换为 SWRL 代码?

javascript - 如何在 Neo4j 2.2.x 中使用 JQuery 事务性 Cypher HTTP 端点和新的 REST API 身份验证和授权

rest - 使用 Postman 设置访问 token