0

我已经能够在谷歌云平台上设置我的虚拟机,并且能够使用本教程成功地通过 SSH 连接到我的 RPi:

https://medium.com/jj-innovative-results/how-to-access-a-raspberry-pi-anywhere-with-reverse-ssh-and-google-cloud-platform-59b6a89501a

现在我想将我的 LAN 应用程序托管在 RPi 上的端口 8080 上的 HTTP 数据而不是端口 22 上的 SSH 数据传输到我的虚拟机。我该怎么做,这可能吗?

从那里我计划购买一个域以在互联网上查看我的 LAN 应用程序。我不想使用诸如 remoteit/zerotier 之类的服务来执行此操作

请帮忙

4

1 回答 1

0

出于安全原因,我建议在 Internet 和 SSH 服务器之间设置代理。您可以跳过步骤 #1 和 #2 并使用高于 1024 的端口号,例如 8080。切勿直接在端口 80 上运行 SSH 服务器,因为这需要特权。

步骤1)

安装 Apache 或 Nginx。

第2步)

在 Apache/Nginx 中设置代理,将端口 80 上的连接转发到端口 8080。

Nginx 的示例配置:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:8080";
    }
}

步骤 3)

将 VM SSH 服务器配置为允许端口转发选项 AllowTcpForwarding。

设置隧道以打开 VM 上的端口 8080 并转发到 Raspberry Pi 上的侦听端口(例如 9000)。

在树莓派上运行的示例 SSH 命令:

ssh -R 8080:127.0.0.1:9000 <VM IP Address> <Your credentials>

细节。此命令打开公共 VM 服务器上的端口 8080 并将流量转发回您的系统到端口 9000。

注意:我没有测试SSH命令,但这应该是正确的。网上有很多例子,比如link。此答案将帮助您了解流量是如何路由(转发)的。

第4步)

配置在 Raspberry Pi 上运行的应用程序以侦听端口 9000(示例)。

总结,客户端连接到 VM 端口 80,该端口转发到 VM 端口 8080,该端口通过 SSH 隧道转发到 Raspberry Pi,该应用程序在端口 9000 上侦听。

当然,您可以更改端口号,我使用唯一的端口号以防止混淆。

于 2021-10-17T00:17:33.787 回答