我正试图从盒子B(Windows)访问在盒子A(Debian)上运行的远程调试端口。在框A上,我正在运行带有--remote-debugging-port=9222
标志的Chrome,我可以看到它正常工作(我可以从A上的另一个浏览器访问localhost:9222
)。此外,我确信盒子A和B是连接的,因为我可以从盒子B访问在盒子A上运行的:80
(apache)。我现在需要做的是允许盒子B访问盒子A上的:9222
。我已经研究了端口转发和iptables规则,但我没能让它工作。
编辑
机器B是Windows,所以我不知道如何在那里使用ssh,我发现了一个用于端口转发的应用程序,它似乎工作得很好。但它给了我一个错误:"收到连接,但无法连接到主机B:9222"。所以看起来9222没有对外部连接开放。A上netstat的输出给我:
root@template:/home/developer# netstat -nap | grep 9222
tcp 0 0 127.0.0.1:9222 0.0.0.0:* LISTEN 24300/user
我在这里找到了答案。一切都归结为:
- 在一个控制台中打开Chrome:
google-chrome --remote-debugging-port=9222
- 并在另一个
ssh -L 0.0.0.0:9223:localhost:9222 localhost -N
中建立代理 - 现在,您应该能够通过
http://192.168.1.123:9223/
从另一台计算机访问远程调试
浏览器将套接字绑定到本地主机地址。这就是为什么您在访问端口时遇到问题。
您可以借助ssh端口转发功能来解决这个问题。
sshuser@host-A.example.org-L 9111:127.0.0.1:9222
运行此命令后,请在主机B 上打开localhost:9111
ssh将把连接转发到主机A,并将其连接到localhost:9222
另一种解决方案是借助nc 在主机A上转发另一个端口
http://en.wikipedia.org/wiki/Netcat