远程调试 - 如何创建端口代理?

Posted

技术标签:

【中文标题】远程调试 - 如何创建端口代理?【英文标题】:Remote debugging - how to create a port proxy? 【发布时间】:2012-08-18 17:46:34 【问题描述】:

我正在尝试从盒子 B (Windows) 访问在盒子 A (Debian) 上运行的远程调试端口。在盒子 A 上,我正在运行带有 --remote-debugging-port=9222 标志的 Chrome,我可以看到它正常工作(我可以从 A 上的另一个浏览器访问 localhost:9222)。另外,我确定框 A 和 B 已连接,因为我可以从框 B 访问在框 A 上运行的 :80 (apache) 就好了。我现在需要做的是允许 box B 访问 box A 上的:9222。我研究过端口转发和 iptables 规则,但未能成功。

编辑

机器 B 是 Windows,所以我不确定如何在那里使用 ssh,我找到了一个用于端口转发的 app,它似乎工作正常。但是它给了我一个错误:“收到连接但无法连接到主机-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     

【问题讨论】:

【参考方案1】:

我找到了我的答案here。一切都归结为:

在一个控制台中打开 Chrome:google-chrome --remote-debugging-port=9222 并在另一个中设置代理:ssh -L 0.0.0.0:9223:localhost:9222 localhost -N 现在你应该可以通过http://192.168.1.123:9223/从另一台机器访问远程调试了

【讨论】:

【参考方案2】:

浏览器将套接字绑定到 localhost 地址。这就是您无法访问端口的原因。

您可以借助 ssh 端口转发功能解决问题。

ssh user@host-A.example.org -L 9111:127.0.0.1:9222

运行此命令后请在主机 B 上打开 localhost:9111

ssh 会将连接转发到主机 A 并连接到 localhost:9222

【讨论】:

感谢您的回答,我在 B 上运行了端口转发,但似乎端口 9222 未对 A 上的外部消息开放。我已编辑我的问题以包含其他信息。【参考方案3】:

另一种解决方案是在 nc 的帮助下转发主机 A 上的另一个端口

http://en.wikipedia.org/wiki/Netcat

【讨论】:

再次感谢,关于 netcat 的线索很棒。它让我找到了这个:***.com/a/9269355/1143495 .

以上是关于远程调试 - 如何创建端口代理?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试 ngrok 隧道暴露的远程 JVM

vscode 远程连接 docker 容器进行 C++ 代码调试实践

查尔斯调试代理未连接到本地主机

tomcat开发远程调试端口以及利用eclipse进行远程调试

yum 安装的tomcat 如何 IDEA 远程调试

十pycharm 远程代码调试