too*_*kit 8 ssh port-forwarding
我正在尝试通过 ssh 隧道监视在不同服务器上运行的多个 JVM。
感谢这里的一位 UNIX 专家,我设法通过以下方式为单个服务器运行它:
jstatd
在目标服务器上运行在我的本地 PC 上,运行:
ssh -L 2222:server1:22 bastion-host
Run Code Online (Sandbox Code Playgroud)在我的本地 PC 上,运行:
ssh -o port=2222 -D 9696 -L 1099:localhost:1099 localhost
Run Code Online (Sandbox Code Playgroud)这就是诀窍。现在,当我尝试通过隧道连接到第二台服务器时,我尝试:
在我的本地 PC 上,运行:
ssh -L 3333:server2:22 bastion-host
Run Code Online (Sandbox Code Playgroud)在我的本地 PC 上,运行:
ssh -o port=3333 -D 9696 -L 2099:localhost:1099 localhost
Run Code Online (Sandbox Code Playgroud)但是,最后一步抱怨:
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 9696
Run Code Online (Sandbox Code Playgroud)
有没有人设法做类似的事情?
更新:
之所以如此复杂,是因为 jstatd 是一个 RMI 服务器应用程序:
http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstatd.html
与 RMI 应用程序一样,它们通过 rmiregistry 注册。通过防火墙使用 rmi 需要我使用 SOCKS,如下所述:
http://download.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#firewallOut
不幸的是,visualvm 只允许我设置一次 SOCKS 代理端口,而 -D 选项不允许我将相同的本地端口转发到两台服务器......
我是否认为您已经拥有计算机(计算机 A),并假设您无法直接在某个端口上连接到两台服务器(A 和 B),因此想通过 SSH 隧道连接到它们,这是否正确?
如果是这样,您在不同的本地端口上使用 -L 而不是 -D 从您的机器(一个到每个目标服务器)创建两个隧道,然后在您的监控工具中连接到您的本地机器(无代理设置),就好像它是要检查的远程服务器。
ssh -L 9000:localhost:<local port jstatd listens on> user@server1
ssh -L 9001:localhost:<local port jstatd listens on> user@server2
Run Code Online (Sandbox Code Playgroud)
然后使用本地监视器连接到 localhost:9000 和 localhost:9001,这些隧道将您连接到目标 jstatd。
如果有一个中间服务器,那么一个两跳隧道,
ssh -L 9000:server1:<local port jstatd listens on> user@bastion-host
ssh -L 9001:server2:<local port jstatd listens on> user@bastion-host
Run Code Online (Sandbox Code Playgroud)
嗯,如果堡垒主机可以与所有 JVM 对话,那么
ssh -D 9000 user@bastion-host
Run Code Online (Sandbox Code Playgroud)
创建一个socks代理就足够了,然后你就可以在端口9000上使用了。
来自 ssh 联机帮助页:
\n\n -D [bind_address:]port\n Specifies a local \xe2\x80\x9cdynamic\xe2\x80\x9d application-level port forwarding.\n This works by allocating a socket to listen to port on the local\n side, optionally bound to the specified bind_address. Whenever a\n connection is made to this port, the connection is forwarded over\n the secure channel, and the application protocol is then used to\n determine where to connect to from the remote machine. Currently\n the SOCKS4 and SOCKS5 protocols are supported, and ssh will act\n as a SOCKS server. Only root can forward privileged ports.\n Dynamic port forwardings can also be specified in the configura\xe2\x80\x90\n tion file.\n
Run Code Online (Sandbox Code Playgroud)\n\n您指定同一本地端口进行两次转发;尝试-D 9697
第二个设置。
归档时间: |
|
查看次数: |
22435 次 |
最近记录: |