Java中具有防火墙的简单SSH隧道

时间:2015-09-24 02:49:01

标签: java ssh

我目前正在尝试使用Java在远程服务器上运行某些命令来创建自动化测试,问题是这个远程服务器有防火墙。手动我可以使用putty ssh到第一个服务器(防火墙)。然后我输入要执行命令的服务器的详细信息。我已经看到一些带有代码的文章提到了如何使用我可以ssh到远程客户端的java代码(jsch.jar),但是当防火墙存在时我还没有找到足够好的解释。有人可以给我一个解释,我应该尝试做什么,并尽可能使用一些代码片段

1 个答案:

答案 0 :(得分:0)

不是一个完整的答案,只是一个想法。

OpenSSH有一项名为ProxyCommand的功能。它允许自动在目标系统上发出命令,可能是另一个ssh

所以我在.ssh/config中有几个这样的条目:

Host the.private.host.behind.firewall.net
  Hostname 10.0.100.106
  User username_on_the_private_host
  Compression yes
  ProxyCommand ssh the.firewall.net nc -q 1 %h %p

现在我可以发出ssh the.private.host.behind.firewall.net并首先进入the.firewall.net上的SSH身份验证,然后进入目标主机上的第二次身份验证。

可能Java本身就实现了SSH协议,但也许你可以创建一个像这样的结构。