远程调试 - 如何创建端口代理?
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 .以上是关于远程调试 - 如何创建端口代理?的主要内容,如果未能解决你的问题,请参考以下文章
vscode 远程连接 docker 容器进行 C++ 代码调试实践