⏺ # 通过跳板机向内网宿主机传输文件
环境说明
- Mac 机器:本地开发机
- 跳板机:125.94.43.42:2222(堡垒机,禁用 SCP 上传和端口转发)
- 内网宿主机:10.34.251.22 (xs4773)
- 网络拓扑:Mac 可以通过跳板机 SSH 到内网机器,但无法直接 SCP 传输
失败的方案
以下方案因跳板机安全限制而失败:
- ❌
scp -JProxyJump 直传 - 跳板机禁用端口转发 - ❌ 两步传输(先传到跳板机再转发)- 跳板机禁止文件上传
- ❌ SSH 管道传输 - 内网机器要求公钥认证
成功方案:HTTP 服务器直传
前提条件:Mac 和内网宿主机在同一大网络(能互相访问,如通过 VPN)
步骤 1:获取 Mac 的 IP 地址
# 在 Mac 上执行
ifconfig | grep "inet " | grep -v 127.0.0.1
# 输出示例:inet 100.100.32.216
记录 Mac 的 IP 地址(如 100.100.32.216)
步骤 2:在 Mac 上启动 HTTP 文件服务器
# 方案 A:从 Downloads 目录提供文件
cd ~/Downloads
python3 -m http.server 8000
# 方案 B:从特定目录提供文件(如二进制文件目录)
cd /path/to/your/files
python3 -m http.server 8001
注意:保持终端运行,不要关闭
步骤 3:在内网宿主机上下载
# SSH 到内网宿主机
ssh -p 2222 -J tianyukun@tianyukun@10.56.35.38@125.94.43.42 root@10.34.251.22
# 下载文件(替换 <Mac-IP> 和端口号)
wget http://<Mac-IP>:8000/filename -O /destination/path
实际使用示例
示例 1:下载 Go 安装包
# Mac 上
cd ~/Downloads
python3 -m http.server 8000
# xs4773 上
wget http://100.100.32.216:8000/go1.25.5.linux-amd64.tar.gz -O /tmp/go1.25.5.linux-amd64.tar.gz
示例 2:下载自定义二进制文件
# Mac 上
cd /Users/tyk/kubevirt-metadata/bin
python3 -m http.server 8001
# xs4773 上
wget http://100.100.32.216:8001/kubevirt-metadata-linux -O /root/kubevirt-metadata-linux
chmod +x /root/kubevirt-metadata-linux
安装 Go 的完整流程
# 1. 在 Mac 上启动 HTTP 服务器
cd ~/Downloads
python3 -m http.server 8000
# 2. SSH 到内网宿主机
ssh -p 2222 -J tianyukun@tianyukun@10.56.35.38@125.94.43.42 root@10.34.251.22
# 3. 下载 Go
wget http://100.100.32.216:8000/go1.25.5.linux-amd64.tar.gz -O /tmp/go1.25.5.linux-amd64.tar.gz
# 4. 安装 Go
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf /tmp/go1.25.5.linux-amd64.tar.gz
# 5. 配置环境变量
cat >> ~/.bashrc << 'EOF'
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
EOF
# 6. 使配置生效
source ~/.bashrc
# 7. 验证安装
go version
# 8. 清理安装包
rm /tmp/go1.25.5.linux-amd64.tar.gz
注意事项
1. 端口占用:如果 8000 端口被占用,可以换成其他端口(如 8001, 8080 等)
2. 防火墙:确保 Mac 的防火墙允许入站连接,或临时关闭防火墙
3. 网络连通性:Mac 和内网机器必须能互相访问(通常通过公司 VPN)
4. 文件路径:HTTP 服务器只能访问启动目录及其子目录的文件
5. 安全性:传输完成后记得关闭 HTTP 服务器(Ctrl+C)
备用方案(如果 HTTP 不通)
Base64 编码通过 SSH 传输(不推荐,速度慢)
# 在 Mac 上执行(需要内网机器允许从跳板机 SSH)
cat /path/to/file | base64 | \
ssh -p 2222 tianyukun@tianyukun@10.56.35.38@125.94.43.42 \
"ssh root@10.34.251.22 'base64 -d > /destination/path'"
快速参考
# 获取 Mac IP
ifconfig | grep "inet " | grep -v 127.0.0.1
# 启动 HTTP 服务器
cd /path/to/files && python3 -m http.server 8000
# 下载文件
wget http://<Mac-IP>:8000/<filename> -O /destination/path