我目前正在使用JSch作为连接到我的远程服务器的库。在其中一个场景中,我应该能够通过server1登录到server2。也就是说,我应首先登录到server1,然后ssh到另一台服务器(server2)并执行我的命令。此外,有时我应该能够从server2连接到server3。
所以,基本上,我正在寻找一种方法来建立多级ssh连接,我不知道如何在Java中处理,因为我不能在会话的每个Exec Channel中执行多个命令。
任何见解都将受到赞赏。
谢谢, 礼
答案 0 :(得分:2)
因此,您可以毫无问题地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
在这一点上,我认为很清楚如何将其扩展到任意级别......: - )