当前位置: 首页 > news >正文

通过SSH隧道与跳板机实现本地端口映射访问服务器文件

文章目录

    • 场景需求
    • 一、服务器端配置
      • 1. 启动HTTP文件服务
      • 2. 配置防火墙
      • 3. 验证服务状态
    • 二、SSH隧道建立
      • 1. 直接连接场景
      • 2. 通过跳板机连接
    • 三、Windows端配置
      • 1. 使用PowerShell建立隧道
      • 2. 保持隧道稳定
    • 四、浏览器验证
    • 五、高阶配置建议
      • 1. 生产环境增强
      • 2. SSH安全加固
    • 故障排查指南
    • 原理解析

场景需求

  • 在Windows浏览器访问 127.0.0.1:12138
  • 自动显示服务器指定路径下的文件列表
  • 通过跳板机进行安全中转

一、服务器端配置

1. 启动HTTP文件服务

作用:将服务器指定目录通过HTTP协议暴露,使12138端口可访问文件列表。

# 进入目标目录
cd /path/to/your/directory

# 使用Python3启动简易HTTP服务(推荐测试用)
python3 -m http.server 12138 --bind 0.0.0.0

# 生产环境建议使用Nginx/Apache持久化配置

关键参数

  • --bind 0.0.0.0 允许外部IP访问
  • 默认展示当前目录文件列表

2. 配置防火墙

作用:确保服务器的12138端口可通过防火墙。

# Ubuntu UFW
sudo ufw allow 12138/tcp

# CentOS firewalld
sudo firewall-cmd --permanent --add-port=12138/tcp
sudo firewall-cmd --reload

3. 验证服务状态

netstat -tuln | grep 12138  # 确认端口监听
curl http://localhost:12138 # 测试本地访问

二、SSH隧道建立

1. 直接连接场景

命令

ssh -L 12138:localhost:12138 user@server_ip -N

参数解析

  • -L 本地端口转发
  • 第一个12138:本地监听端口
  • localhost:12138:目标服务器的映射地址
  • -N 不执行远程命令

2. 通过跳板机连接

作用:当服务器处于内网需通过跳板机访问时。

# 方法1:SSH嵌套连接
ssh -L 12138:target_server:12138 jump_user@jump_host -t ssh user@target_server

# 方法2:使用ProxyJump(OpenSSH 7.3+)
ssh -J jump_user@jump_host user@target_server -L 12138:localhost:12138 -N

流程说明

  1. 本地与跳板机建立连接
  2. 通过跳板机作为中介连接到目标服务器
  3. 隧道数据流:浏览器 -> 本地12138 -> 跳板机 -> 目标服务器12138

三、Windows端配置

1. 使用PowerShell建立隧道

ssh -L 12138:localhost:12138 user@server_ip -N

2. 保持隧道稳定

  • 使用autossh自动重连:
    autossh -M 0 -L 12138:localhost:12138 user@server_ip -N
    
  • 配置为Windows服务, 或通过bat批处理, 双击批处理脚本自动连接.

四、浏览器验证

  1. 打开 http://127.0.0.1:12138
  2. 应显示服务器端指定目录的文件列表
  3. 支持点击下载文件(取决于HTTP服务配置)

五、高阶配置建议

1. 生产环境增强

  • 使用Nginx配置带认证的静态服务:
    server {
        listen 12138;
        location / {
            alias /path/to/directory/;
            autoindex on;
            auth_basic "Restricted";
            auth_basic_user_file /etc/nginx/.htpasswd;
        }
    }
    

2. SSH安全加固

  • 使用密钥认证代替密码
  • 限制跳板机用户权限
  • 设置SSH连接超时时间

故障排查指南

现象排查步骤
连接超时1. 检查防火墙规则
2. 验证跳板机连通性
3. 确认目标服务是否运行
无文件列表1. 检查HTTP服务是否绑定0.0.0.0
2. 确认目录权限
3. 查看服务日志
隧道中断1. 使用-v参数查看SSH调试信息
2. 检查网络稳定性

原理解析

  • SSH隧道:在本地与远程服务器之间建立加密通道,实现端口流量的透明转发
  • 端口映射:通过-L参数将本地端口流量重定向到远程端口
  • 跳板机作用:作为网络边界的安全检查点,避免直接暴露内网服务器

相关文章:

  • 数据结构之双向链表-初始化链表-头插法-遍历链表-获取尾部结点-尾插法-指定位置插入-删除节点-释放链表——完整代码
  • MTKAndroid12 解决SystemUI下拉框中,长按WIFI图标会导致崩溃问题
  • 深入了解Spring事务及其使用场景
  • go:前后端分离
  • (UI自动化测试)第二篇:元素定位的方法_name定位
  • 【学习】CMMM/DCMM等智能制造产业常见资质学习
  • hive:处理JSON格式(get_json_object()函数),连续登录题型,快速生成表(explode,stack),迭代计算
  • 使用flask_restful快速构建接口
  • AI生成移动端贪吃蛇游戏页面,手机浏览器打开即可玩
  • .net core集成MQTT服务端
  • Pytorch中的torch.utils.data.Dataset 类
  • Next-Auth 认证系统:用户与管理员双角色登录配置
  • 【深度技术揭秘】 Android SystemUI锁屏界面动态布局重构:横竖屏智能适配指南
  • 【最后203篇系列】022 用Deepseek14b提取新闻事件
  • 官方通知 | 2025年CAIP人工智能职场应用师(AI职场应用师)职业能力认证正式发布
  • 【机器学习】机器学习四大分类
  • Camera2 与 CameraX 闲谈
  • 【惯性系与固连系速度位置加速度转换关系】
  • Redis 内存淘汰策略
  • Compose 原理解析
  • 潘功胜:一季度中国经济开局良好,金融市场展现出较强韧性
  • 安徽铁塔回应“指挥调度中心大屏现不雅视频”:将严肃处理
  • 84%白化!全球珊瑚正经历最严重最大范围白化现象
  • 东部战区新闻发言人就美“劳伦斯”号导弹驱逐舰过航台湾海峡发表谈话
  • 再放宽!新版市场准入负面清单发布,无人驾驶航空器、电子烟等新业态被纳入
  • 新任乒协副主席马龙:感谢刘国梁,愿把经验传给年轻运动员