通过终端,我可以多次SSH连接到服务器:
(客户端--->网关---> server1的---->服务器2 ---)
但是现在要通过Java的Java库来实现它,怎么去呢?
首先尝试过portforwarding,但在终端上我没有这样做(不在-R -L
中设置ssh
个参数)。
然后我遇到了问题How to SSH to a server behind another SSH server using JSch?,但我不明白如何创建tcp隧道!
答案 0 :(得分:0)
端口转发是最好的方式。
您不在终端中进行端口转发,因为您通过键入ssh
命令手动连接到第二部分。虽然您可以使用JSch自动执行此操作,但它并不是尝试模拟人类的可靠方法。如果您想用JSch替换第一个ssh
(终端)步骤,出于同样的原因,您不希望在第二步中使用ssh
。您链接到的问题中的accepted answer也会阻止您尝试这样做。当一切顺利时,它可能会起作用。但是一旦出现任何问题,你的遗嘱就会自动解决问题。例如,您很难自动化第二台服务器的主机密钥验证。
SSH隧道是端口转发。但也许所提到的ProxySSH
(似乎不再存在)在内部没有打开本地端口,但使用了"端口转发"直接通过第二个会话。但这实现起来太复杂了。坚持简单的端口转发。
有关完整示例,请参阅:
JSch multi tunnel & hopping timed out for the second forwarding