想让一台没有公网 ip 的电脑 A 连接到另一台没有公网 ip 的电脑 B 的端口。手头只有一个挂机宝,也就是说只开放了一个 SSH 端口。
可以使用 SSH 端口转发功能实现这样的需求。
在电脑 B 上运行这个 Python 脚本,用于测试连接:
from flask import *
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__=="__main__":
print("starting server...")
app.run(host='0.0.0.0',port=8081)
print("server is running")
电脑 B 浏览器输入 127.0.0.1:8081
,可看到 Hello World。
打开电脑 B 的终端,输入类似这样的指令,将本地 8081 映射到中转服务器的 18081:
ssh root@XXX.XXX.XXX.XXX -R 18081:127.0.0.1:8081 -p XXXXX
接下来打开电脑 A 的终端,输入类似这样的指令,将中转服务器的 18081 映射到本地 8081:
ssh root@XXX.XXX.XXX.XXX -L 8081:127.0.0.1:18081 -p XXXXX
电脑 A 浏览器输入 127.0.0.1:8081
,也可以看到 Hello World 了。