通过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
流程说明:
- 本地与跳板机建立连接
- 通过跳板机作为中介连接到目标服务器
- 隧道数据流:浏览器 -> 本地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批处理, 双击批处理脚本自动连接.
四、浏览器验证
- 打开
http://127.0.0.1:12138
- 应显示服务器端指定目录的文件列表
- 支持点击下载文件(取决于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
参数将本地端口流量重定向到远程端口 - 跳板机作用:作为网络边界的安全检查点,避免直接暴露内网服务器