繁体   English   中英

可以在没有网络访问和通过隧道访问的情况下在 linux 服务器上运行 Flask web 应用程序吗?

[英]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 ,但还是没有。

有没有办法做到这一点?

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

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

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

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

你的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()

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

pip install pyngrok

并使用它:

from pyngrok import ngrok

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM