SSH反向隧道 (内网穿透)

SSH反向隧道 (内网穿透)

  • 需要准备两台机器
  • A 机器为公网机器 (11.22.33.44) 相当于桥梁
  • B 机器为内网机器 (10.0.0.2) 需要穿透
构建隧道
  1. 需要在 A 机器上将sshd服务开启 GatewayPorts 的配置
    设置 /etc/ssh/sshd_config 配置文件中的 #GatewayPorts noGatewayPorts yes
    sed -i "/GatewayPorts/c GatewayPorts yes" /etc/ssh/sshd_config
    systemctl restart sshd
    
  2. 参数详解
    • -f 后台执行ssh指令
    • -C允许压缩数据
    • -N 不执行远程指令
    • -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
    • -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
    • -o ServerAliveInterval=300 ssh 客户端每300秒就给server发个心跳,以免链路被RST
  3. 建立A机器到B机器的反向代理,即使用ssh隧道功能将 A 机器上指定端口转发到 B 内网机器上
    ssh -fCNR 8222:10.0.0.2:22 root@11.22.33.44
    # OR
    ssh -fCNR 8222:10.0.0.2:22 root@11.22.33.44 -o ServerAliveInterval=300
    
  4. 建立B机器的正向代理,用来做转发,B 机器的8282端口为本地转发端口,负责和外网进行通信,并将数据转发到A机器的22端口,实现了可以从其他机器访问的功能
    ssh -fCNL 0.0.0.0:8282:11.22.33.44:22 root@11.22.33.44
    
issues
  1. 需要这个隧道能够一直保持连接状态,可以使用 autossh
### 什么是SSH内网穿透 SSH内网穿透是一种技术手段,允许外部网络访问位于内部局域网中的设备和服务。这种技术通常用于远程管理和数据传输场景下,解决因防火墙或路由器限制而导致无法直接访问目标主机的问题。 --- ### 使用Cpolar实现Linux系统的SSH内网穿透 对于基于Linux的操作系统,可以利用Cpolar工具快速完成SSH内网穿透配置。以下是具体说明: #### 安装Cpolar并创建公网SSH连接地址 在Linux环境中安装Cpolar后,可以通过其内置功能生成一个可被外网访问的SSH连接地址[^1]。此过程涉及启动Cpolar客户端并与服务器建立隧道连接。 #### JuiceSSH进行公网远程连接 JuiceSSH是一款适用于Android平台的SSH客户端软件,在完成了上述步骤之后,用户能够借助该应用经由所生成的公有IP端口组合来登录到自己的Linux机器上。 #### 固定SSH公网地址及测试 为了保障每次重启服务或者更换会话时仍能保持一致性的接入路径,则需进一步设置固定的映射关系,并执行必要的功能性验证操作以确认一切正常运作。 --- ### Windows环境下SSH内网穿透方案 同样地,在微软Windows操作系统里也可以达成相似效果——即让外界得以穿越NAT层抵达个人计算机上的资源位置处。 #### 启用与检验本地SSH服务能力 先要确保本机已开启支持OpenSSH协议的服务组件;接着运用标准命令行界面来进行初步的功能性检测,比如尝试ping回环地址localhost(127.0.0.1),以此判断当前状态是否满足预期需求[^2]。 #### Cpolar部署于Winows之上 紧接着按照官方指引下载对应版本号的exe文件包,依照提示完成整个安装配对流程直至成功上线运行为止。此时应该可以看到一条新的tcp类型的转发记录显示出来代表已经建立了通往互联网的大门入口通道。 #### 测试来自远方地点发起的安全shell请求能否顺利到达指定的目标节点那里去。 最后一步就是实际动手去做一下完整的端到端贯通实验啦! 只需要用任意一款兼容posix接口规范定义下的图形化前端程序像Putty那样东西就可以轻松搞定全部事情咯. --- ### 利用Autossh增强稳定性 考虑到长时间维持稳定可靠的链接可能存在挑战, 推荐采用autossh替代普通的ssh指令下达形式来做同样的工作内容. 它具备自动重连机制以及心跳探测特性等功能优势可以帮助我们更好地应对可能出现的各种异常状况. 命令样例如下所示: ```bash autossh -M 0 -L 443:127.0.0.1:332 root@[ssh_server] -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" ``` 这里设置了每隔三十秒钟发送一次探针信号给远端伙伴告知自己还活着; 如果连续三次都没有收到回应就会触发重新构建关联动作直到恢复正常通讯联系为止.[^3] --- ### Frp作为另一种选择 Frp (Fast Reverse Proxy) 是另一个非常流行且高效的反向代理解决方案之一, 特别适合用来处理复杂的多业务场景下的流量调度问题. 它的架构设计清晰明了易于理解和掌握, 并提供了丰富的参数选项让用户可以根据实际情况灵活调整优化性能表现. ![frp_http_and_ssh](https://example.com/frp-http-and-ssh.png) 以上图片展示了http和ssh两种模式下的基本原理框架图解说明文档资料来源出处标记如下:[^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值