免装软件和服务,使用SSH实现内网穿透并反向代理

前言

很多 Web 服务开发者经常会碰到需要将本地开发测试中的 Web 服务发给客户预览,或者是像微信支付平台类需要接受 回调通知 的业务场景,此时如果本地没有公网IP,就无法使用 DMZ 或者 端口转发 之类的方案将本地的服务发布到公网上让外部可以访问。

所以此时很多人都使用类似 Ngrok frp 之类的 内网穿透 工具来进行操作。

其实,SSH本身也可以进行各种代理和转发,跟 Ngrok 之类服务一样,你也需要一台公网可以访问的服务器。

打开SSHD服务端口转发

首先编辑 sshd_config 文件:

bash 复制代码
vi /etc/ssh/sshd_config

找到 GatewayPorts,删掉注释,并将参数配置为 GatewayPorts yes,然后重启 sshd 服务即可:

bash 复制代码
service sshd restart

使用命令行连接并启动

通过SSH命令来启动并直接指定转发规则:

我们将访问公网服务器 9999 端口的所有请求转发到 没有公网 的本机电脑的 8080 端口,就可以使用下面的命令来操作:

bash 复制代码
ssh root@hamm.cn -o StrictHostKeyChecking=no -NCR 9999:localhost:8080

上面的参数意思是,连接 hamm.cn 服务器的 ssh 服务,通过 -o StrictHostKeyChecking=no 来禁用一些安全提示,如服务器公钥验证/可信服务器验证等提示, 通过 -NCR 来实现一些其他配置:

  • N 不执行远程命令
  • C 压缩数据并高效传输
  • R 反向转发

当然,上面的服务会保持前台挂起状态,如需放到后台,可以再加个 f 参数即可:-NCRf

现在就可以通过访问公网 http://hamm.cn:9999 就能转发到本机的 http://localhost:8080 了,是不是美滋滋?

你可能会在其他文章中看到为了保持服务的稳定性和断线重连之类巴拉巴拉的,会让你去使用 autossh 之类的软件,但那与本文的标题"免装软件和服务"有一些格格不入,这里就不做介绍了。如果有iptable的话,也可以使用iptable来直接做防火墙级别的端口转发。非得装,那为啥不直接用 frp 之类更符合本文业务场景需求的工具呢?

好了,就到这里吧。

相关推荐
未来之窗软件服务几秒前
幽冥大陆(四十五)人工智能自动化交互系统ASR——东方仙盟筑基期
运维·自动化·asr·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟自动化
编程修仙1 分钟前
第六篇 HttpServletRequest对象
java·spring boot·后端
忆~遂愿2 分钟前
vLLM Ascend 项目架构解析与部署配置指南
人工智能·后端·python·ai
小婷要努力6 分钟前
Linux常用命令速查表
linux·运维·服务器
爱宇阳6 分钟前
Jenkins 多语言 Agent 完整部署教程
运维·servlet·jenkins
微风◝10 分钟前
AlmaLinux9-网络管理篇-更改网络接口名称
linux·运维·网络
tianyuanwo11 分钟前
Ansible构建节点管理:Koji与Mock构建节点的自动化运维实践
运维·自动化·ansible
车载测试工程师11 分钟前
CAPL学习-SOME/IP交互层-服务器端API函数
网络协议·tcp/ip·以太网·capl·canoe
闲人编程15 分钟前
Flask扩展开发:从零编写自己的Flask扩展
后端·python·flask·sqlalchemy·config·login·codecapsule
北京耐用通信16 分钟前
告别调试噩梦:耐达讯自动化实现EtherNet/IP转DeviceNet网关即插即用
人工智能·物联网·网络协议·自动化·信息与通信