我已经能够在谷歌云平台上设置我的虚拟机,并且能够使用本教程成功地通过 SSH 连接到我的 RPi:
现在我想将我的 LAN 应用程序托管在 RPi 上的端口 8080 上的 HTTP 数据而不是端口 22 上的 SSH 数据传输到我的虚拟机。我该怎么做,这可能吗?
从那里我计划购买一个域以在互联网上查看我的 LAN 应用程序。我不想使用诸如 remoteit/zerotier 之类的服务来执行此操作
请帮忙
我已经能够在谷歌云平台上设置我的虚拟机,并且能够使用本教程成功地通过 SSH 连接到我的 RPi:
现在我想将我的 LAN 应用程序托管在 RPi 上的端口 8080 上的 HTTP 数据而不是端口 22 上的 SSH 数据传输到我的虚拟机。我该怎么做,这可能吗?
从那里我计划购买一个域以在互联网上查看我的 LAN 应用程序。我不想使用诸如 remoteit/zerotier 之类的服务来执行此操作
请帮忙
出于安全原因,我建议在 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 上侦听。
当然,您可以更改端口号,我使用唯一的端口号以防止混淆。