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