【问题标题】:How to ssh multiple times by JSch: port forwarding, ssh command or SSH tunnel?如何通过 JSch 多次 ssh:端口转发、ssh 命令或 SSH 隧道?
【发布时间】:2016-09-17 08:24:32
【问题描述】:

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

(客户端--->网关--->server1---->server2---)

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

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

【问题讨论】:

标签: ssh tcp jsch tunnel


【解决方案1】:

端口转发是最好的方法。

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


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

有关完整示例,请参阅:
JSch multiple tunnels/jumphosts

【讨论】:

  • 我知道在jsch中端口转发是唯一的方法,你能提供一些资源来做这个多跳隧道吗?
  • 我不知道这样的资源。首先,确保您甚至可以发送single-hop port forwarding
  • 我可以单跳
  • 好吧,你的另一个问题看起来你不是。除非“单跳”是指直接连接。
  • 我能够连接到网关(即时服务器)。但是从那里当我转发并尝试在下一个服务器上创建会话时,它说连接被外部主机关闭。
猜你喜欢
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多