我已经能够在谷歌云平台上设置我的虚拟机,并且能够使用本教程成功地通过SSH登录我的RPi:
现在,我希望将端口8080上的HTTP数据传输到我的虚拟机,其中我的局域网应用程序托管在RPi上,而不是端口22上的SSH数据。我该如何去做,这是可能的吗?
从那里,我计划购买一个域名,以查看我的局域网应用程序在互联网上。我不想使用诸如remoteit/zerotier这样的服务来做这件事
请帮帮忙
发布于 2021-10-17 00:17:34
出于安全原因,我建议在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)。
在raspberry Pi上运行的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,Raspberry Pi具有侦听端口9000的应用程序。
当然,您可以更改端口号,我使用了唯一的端口号以防止混淆。
https://stackoverflow.com/questions/69600207
复制相似问题