通过ssh反向隧道及nginx反向代理实现外网控制内网nodemcu芯片

该博客介绍了如何通过ssh建立外网到内网的反向隧道,并利用nginx配置反向代理,实现外网访问内网中的nodemcu芯片。步骤包括设置sshd配置,创建ssh反向隧道,以及调整nginx配置来转发请求到nodemcu的http服务。

基本思路:通过ssh反向隧道实现外网服务器端口到内网中继服务器端口的转发,通过配置内网中级服务器nginx反向代理,将外网发过来的请求转发到目标服务器上。最后实现通过访问外网ip转到访问内网的目标服务器。


(一)ssh反向隧道将外网服务器端口转发到内网中继服务器指定端口

(1)首先需要指定外网中继服务器 sshd 的 GatewayPorts(转发外部主机的端口)
打开中继服务器的 /etc/ssh/sshd_conf 并添加下面的行:

GatewayPorts clientspecified

重启 sshd:

sudo /etc/init.d
### 如何使用 Nginx 配置 SSH 反向代理 为了实现通过 NginxSSH 进行反向代理的功能,可以按照以下方法完成配置: #### 1. 修改 Nginx 配置文件 编辑 Nginx 的配置文件(通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/sites-available/default`),并添加 `stream` 块来定义 SSH 流量的转发逻辑[^2]。 以下是具体的配置示例: ```nginx stream { upstream ssh_backend { server 内网SSH服务器IP:22; # 替换为实际内网 SSH 服务器 IP 和端口号 } server { listen 8023; # 设置外部访问的端口 (例如 8023) proxy_pass ssh_backend; } } ``` 在此配置中,Nginx 将监听指定的外部端口(如 8023),并将流量转发至内部网络中的 SSH 服务器。注意替换 `内网SSH服务器IP` 为你的真实内网地址和端口号[^1]。 #### 2. 安装 Docker 并运行容器(如果适用) 如果你计划在基于 Docker 的环境中部署此功能,则需先安装 Docker,并创建一个包含自定义 Nginx 配置的镜像[^3]。具体操作可以通过 FinalShell 等工具连接到目标主机后执行命令完成。 #### 3. 启动服务与验证状态 保存修改后的配置文件之后重启 Nginx 来应用更改: ```bash sudo systemctl restart nginx ``` 接着确认新启动的服务正常工作以及相关进程已开启,可通过下面这条指令检查是否有对应的 SSH 转发进程正在运行[^4]: ```bash ps aux | grep ssh ``` #### 4. 外部客户端测试连接 最后,在个人计算机上尝试利用标准方式建立远程会话以检验设置效果: ```bash ssh 用户名@公网服务器IP -p 8023 ``` 这里 `-p` 参数指定了之前设定好的公开可用端口号(比如这里的例子用了8023),而不再直接指向默认22端口上的本地机器实例了。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值