我目前正在使用 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/