可以在 linux 服务器上 运行 flask 网络应用程序,无需网络访问和通过隧道访问?

Possible to run flask web app on linux server without web access and access through tunnel?

我在防火墙后的 linux 集群上工作。它没有网络访问权限。

我有这个想法,我可以尝试 运行 flask 并将其定向到我知道已打开的端口(vnc 为 5901),然后隧道化该端口并在我的浏览器中查看它。

目前无法正常工作。这可能吗?

这是我正在做的事情:

helloflask.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=5901)
        #app.run()

我运行python helloflask.py然后

ssh -L 5901:<inner server>:5901 <outer server>

然后我导航到 localhost:5901。没有什么。我也尝试了 links localhost:5901links <server>:5901,但还是没有。

有没有办法做到这一点?

您可以这样做: 运行 远程服务器上任何端口上的 Flask 应用程序或笔记本。比如说端口 5000.

在您的本地机器上 运行 下面的命令建立 ssh 隧道:

ssh -D 8123 -f -C -q -N username@remotesrrver

此处的端口 8123 是任意的,它可以是您本地计算机上允许的任何端口。然后设置您的浏览器之一(可能是 Fire fox)以在端口 8123 上使用 socks 代理 确保流量也被本地主机代理。默认情况下,Firefox 禁用本地主机代理。建立这些后,您应该能够在浏览器上转到 http://localhost:5000 以点击远程计算机上的应用程序 /notebook 运行ning

你的 hellowflask.py 应该像下面这样才能正常工作

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
  app.run(host='0.0.0.0', port=5901)
  #app.run()

我是否可以建议您尝试使用 pyngrok 之类的方法以编程方式为您管理 ngrok 隧道?完全披露,我是它的开发者。 Flask 示例 here,但它就像安装一样简单 pyngrok:

pip install pyngrok

并使用它:

from pyngrok import ngrok

# <NgrokTunnel: "http://<public_sub>.ngrok.io" -> "http://localhost:5000">
http_url = ngrok.connect(5000)