CNode

如何通过一台公网机器访问公司电脑的本地服务器?

问答
JjamieYou发布于7 年前最后回复7 年前11 回复7778 浏览0 收藏

有3台设备。

  1. 家用的电脑
  2. 一台可以通过公网访问的机器
  3. 公司的电脑

如何利用公网的机器通过 node 让家里的电脑访问公司电脑的本地服务器? 我想到是用 socket,但是 npm 找的包都是客户端和服务端通信的,没有服务端主动发起 socket 请求的 api。

查看回复

回复 (11)

M
MichealDean#1·7 年前

https://github.com/fatedier/frp 不过这个是go语言实现的,你想用node实现的话,可以做个参考

S
suyuanhan#2·7 年前

搜索内网穿透

S
saionjisekai#3·7 年前

如果你不是非要用node来解决,可以尝试了解下ssh tunnelnetwork.png

C
chenjiyong#4·7 年前

内网穿透

F
Fundebug#5·7 年前

链式端口转发

本地端口转发远程端口转发结合起来使用,可以进行链式转发。假设A主机在公司,B主机在家,C主机为远程云主机。A主机上运行了前文的Node.js服务,需要在B主机上访问该服务。由于A和B不在同一个网络,且A主机没有独立公共IP地址,所以无法直接访问服务。

通过本地端口转发,将发送到B主机3000端口的请求,转发到远程云主机C的2000端口。

# 在B主机登陆远程云主机C,并进行本地端口转发
ssh -L localhost:3000:localhost:2000 root@103.59.22.17

通过远程端口转发,将发送到远程云主机C端口2000的请求,转发到A主机的3000端口。

# 在A主机登陆远程云主机C,并进行远程端口转发
ssh -R localhost:2000:localhost:3000 root@103.59.22.17

这样,在主机B可以通过访问http://localhost:3000来访问主机A上的服务。

# 在主机B访问主机A上的服务
curl http://localhost:3000
Hello Fundebug

博客全文:玩转SSH端口转发

M
myy#6·7 年前

能实现,但不是很容易。。你可以这么想:

假设 家里电脑上QQ,公司电脑也上QQ,那么,家里电脑可以用QQ远程控制公司的电脑,用公司的电脑访问公司的内网服务器。

Q
qinyang912#7·7 年前

ssh 隧道比较靠谱,建立端口映射,ngrok开源的版本貌似只支持http协议

J
jamieYou#8·7 年前

多谢大家回复,最后选择了5楼提供的方法,用了两行命令就好了。要求不是太高就不折腾了。

Z
zhulinwei#9·7 年前

npm i ngrok -g

X
xiaotuni#10·7 年前

nginx + autossh

L
liangtongzhuo#11·7 年前

libp2p 应该也可以

参与回复
登录后即可参与回复。登录