2010-11-12 58 views
1

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

所以,基本上,我正在寻找一种方法来获得多级ssh连接,我不知道如何在Java中处理,因为我无法在会话的每个Exec通道中执行多个命令。

任何洞察力将不胜感激。

感谢, 礼

回答

2

所以,你已经可以SSH到没有问题,和你熟悉的命令发送到该服务器上运行。

这只是通过服务器层递归的问题,如俄罗斯娃娃。我们假设你想在server2上运行的命令是ls(尽管实际的命令不影响这个例子)。然后,如果您已经登录到server1,则会运行此命令为

$ ssh server2 ls 

对不对?

就在那里,我们有解决方案的两个部分,因为您已经知道如何在登录到主机时运行命令。 SSH到服务器1并运行该命令,并且您的多级登录工作正常。

为了扩展到三个(或更多)主机,这个想法是一样的。如果您已经登录到服务器2,想要运行的命令,你会运行

$ ssh server3 ls 

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

$ ssh server2 ssh server3 ls 

因此整体命令

$ ssh server1 ssh server2 ssh server3 ls 

,并在这一点上我想很明显这是如何可以扩展到任意的水平... :-)

+0

谢谢,它解决了一个部O我的问题,但仍然,我似乎无法登录到第三台机器,至少通过腻子(从键盘获取密码)。我应该尝试查看是否可以使用私钥登录来解决它。 – RezaPlusPlus 2010-11-12 20:33:01

+0

好的,我认为这将完全解决我的问题:http://linuxproblem.org/art_9.html再次感谢。 – RezaPlusPlus 2010-11-12 20:41:39