【问题标题】:Google Cloud expose application after SSH谷歌云在 SSH 后公开应用程序
【发布时间】:2022-01-03 07:25:06
【问题描述】:

我有一个在私人服务器上运行的 Web 应用程序。我使用 ssh 端口隧道将私有服务器端口映射到谷歌云 VM 端口 8080 的端口,当我这样做时 curl http://localhost:8080 在 gcp VM shell 上,它返回一个有效的响应。但是,当我尝试使用外部 IP 从外部(在浏览器中)访问它(或在 shell 中执行 curl http://[external_IP]:8080)时,它会返回“IP 拒绝连接”。

我的防火墙设置允许 8080 s.t. 上的 tcp 流量。当我在没有 ssh 的 VM 中直接在端口 8080 上运行另一个应用程序时(比如 docker hello-world 应用程序),它可以使用相同的链接从外部访问并且运行良好。有没有我必须做的额外配置?

【问题讨论】:

    标签: google-cloud-platform ssh-tunnel


    【解决方案1】:

    检查您的应用程序是否绑定到 127.0.0.1localhost。如果是,请更改为 0.0.0.0

    要接受来自 VPC 的流量,需要绑定到连接到 VPC 的网络接口。地址 0.0.0.0 表示绑定到所有网络接口。

    网络 127.x.x.x 又名 localhost 或环回地址是一个仅限内部 (Class A) 的网络。如果您的应用只绑定到内部网络,外部应用无法连接到您的应用。

    如果您的目标是绑定到 localhost 并使用 SSH 端口转发来访问环回地址,则像这样启动 SSH:

    ssh -L 8080:127.0.0.1:8080 IP_ADDRESS_OF_VM
    

    然后您可以通过这种方式访问​​ VM 上的端口 8080:

    curl http://127.0.0.1:8080
    

    curl 命令正在连接到本地计算机上的端口 8080。然后 SSH 将该连接转发到远程计算机上的端口 8080。

    【讨论】:

    • 非常感谢,这行得通。我多么愚蠢,没有注意到缺少 0.0.0.0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2014-08-17
    • 2019-01-07
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多