我目前正在使用 JSch 作为连接到我的远程服务器的库。在其中一种情况下,我应该能够通过 server1 登录到 server2。也就是说,我应该先登录到 server1,然后 ssh 到另一台服务器(server2)并执行我的命令。此外,有时我应该能够从 server2 连接到 server3。
所以,基本上,我正在寻找一种方法来建立一个我不知道如何在 Java 中处理的多级 ssh 连接,因为我不能在会话的每个执行通道中执行多个命令。
任何见解将不胜感激。
谢谢,礼萨
我目前正在使用 JSch 作为连接到我的远程服务器的库。在其中一种情况下,我应该能够通过 server1 登录到 server2。也就是说,我应该先登录到 server1,然后 ssh 到另一台服务器(server2)并执行我的命令。此外,有时我应该能够从 server2 连接到 server3。
所以,基本上,我正在寻找一种方法来建立一个我不知道如何在 Java 中处理的多级 ssh 连接,因为我不能在会话的每个执行通道中执行多个命令。
任何见解将不胜感激。
谢谢,礼萨
因此,您已经可以server1毫无问题地通过 SSH 访问,并且您熟悉发送命令以在该服务器上运行。
这只是通过服务器层递归的问题,就像俄罗斯娃娃一样。让我们假设您要运行的命令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
在这一点上,我认为很清楚如何将其扩展到任意级别... :-)