如何通过JSch多次ssh:端口转发,ssh命令或SSH隧道?

时间:2016-05-20 07:23:33

标签: ssh tcp jsch tunnel

通过终端,我可以多次SSH连接到服务器:

(客户端--->网关---> server1的---->服务器2 ---)

但是现在要通过Java的Java库来实现它,怎么去呢? 首先尝试过portforwarding,但在终端上我没有这样做(不在-R -L中设置ssh个参数)。

然后我遇到了问题How to SSH to a server behind another SSH server using JSch?,但我不明白如何创建tcp隧道!

1 个答案:

答案 0 :(得分:0)

端口转发是最好的方式。

您不在终端中进行端口转发,因为您通过键入ssh命令手动连接到第二部分。虽然您可以使用JSch自动执行此操作,但它并不是尝试模拟人类的可靠方法。如果您想用JSch替换第一个ssh(终端)步骤,出于同样的原因,您不希望在第二步中使用ssh。您链接到的问题中的accepted answer也会阻止您尝试这样做。当一切顺利时,它可能会起作用。但是一旦出现任何问题,你的遗嘱就会自动解决问题。例如,您很难自动化第二台服务器的主机密钥验证。

SSH隧道是端口转发。但也许所提到的ProxySSH(似乎不再存在)在内部没有打开本地端口,但使用了"端口转发"直接通过第二个会话。但这实现起来太复杂了。坚持简单的端口转发。

有关完整示例,请参阅:
JSch multi tunnel & hopping timed out for the second forwarding