如何在笔记本电脑的浏览器中显示服务器本地主机中 运行 的 webapp

How to display the webapp which is running in local host of a server in my laptop's browser

我不得不说,我不是 Web 开发人员,我对 Web 应用程序的工作原理一无所知。

我已经通过 ssh 连接到远程服务器,从 github 和 运行 下载了一个项目(Python,flask 应用程序):

zwlayer@personalcomputer $ ssh myusername@ku.edu
myusername@ku.edu $ git clone https://github.com/.../project
myusername@ku.edu $ cd project
myusername@ku.edu $ env FLASK_APP=app.py FLASK_ENV=development env USE_CUDA=False flask run --host=0.0.0.0

现在,是否可以通过我的个人计算机上的浏览器与之交互?

您可以在 SSH 中使用本地端口转发。

使用命令 SSH 连接到服务器:

ssh -L 5000:127.0.0.1:5000 myusername@ku.edu

这会将您主机上的端口 5000 转发到服务器上的端口 5000

运行 应用命令:

flask run --host=127.0.0.1 --port=5000(主机和端口选项是为了明确起见)

您应该可以通过在浏览器中输入 http://127.0.0.1:5000 来访问该应用程序。

https://www.booleanworld.com/guide-ssh-port-forwarding-tunnelling/

阅读更多内容

当使用 flask run 启动 Flask 开发服务器时,它默认开始侦听端口 5000 上的环回接口。通过添加 --host=0.0.0.0 你可以让 flask 服务器监听主机的所有网络接口。因此,如果您对主机具有完整的网络访问权限,您应该能够将浏览器指向它。使用您问题中给出的地址,只需在浏览器的地址栏中输入 http://ku.edu:5000 即可与您的 Flask 网络应用程序进行交互。

但是,出于安全原因,不推荐这样做!由于服务器正在侦听每个网络接口,任何可以访问主机的网络的人都可以访问该应用程序。您是 运行 在开发模式下使用 Flask 开发服务器的应用程序,这对于生产使用来说是不安全的。

相反,我建议使用ssh端口转发访问flask开发服务器,绑定到远程主机的环回接口:

zwlayer@personalcomputer $ ssh -L 5000:localhost:5000 myusername@ku.edu
myusername@ku.edu $ git clone https://github.com/.../project
myusername@ku.edu $ cd project
myusername@ku.edu $ env FLASK_APP=app.py FLASK_ENV=development env USE_CUDA=False flask run

这样,ssh 通过 ssh 隧道将指向本地计算机端口 5000 的所有流量转发到远程主机的 localhost:5000,即远程主机本身的端口 5000。

因此,您可以将浏览器指向 http://localhost:5000,它会转发到远程服务器的 localhost:5000,这是您的 Flask 服务器正在侦听的地方。但是——与上述解决方案相反——只有远程主机上的本地或 ssh 用户才能访问您的应用程序。