在日常开发过程中,经常会遇到这样的情况:
本地电脑网络环境正常,但远程服务器由于网络出口限制、访问策略或者环境配置原因,无法正常访问部分外部软件仓库,导致 Git、pip、conda 等工具下载依赖失败。
如果服务器不方便单独配置网络出口,可以利用 SSH 自带的端口转发功能,将本地已有的 HTTP 代理能力临时提供给远程服务器使用。
该方法具有以下特点:
不需要修改服务器网络配置;
不需要安装额外软件;
基于 SSH 加密连接;
仅当前 SSH 会话有效,关闭连接后自动失效。
一、方案原理
整体流程如下:
远程服务器
|
| HTTP请求
|
127.0.0.1:7890
|
| SSH隧道
|
本地电脑
|
| HTTP代理
|
网络出口
通过 SSH 反向端口转发,将服务器访问的代理请求转发到本地电脑,再由本地代理服务完成网络访问。
二、建立 SSH 反向端口转发
首先确认本地开发环境中的 HTTP 代理监听端口。
例如:
127.0.0.1:7890
然后在本地电脑终端执行:
ssh -R 7890:127.0.0.1:7890 root@服务器IP

三、服务器配置环境变量
登录服务器后:
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
此配置仅当前 Shell 会话有效。
如果关闭 SSH:
SSH连接断开
↓
隧道关闭
↓
代理转发失效
重新连接时需要再次建立。
四、适用场景
远程 GPU 服务器环境配置;
Docker 容器依赖安装;
Python 包下载;
开发环境快速部署;
临时网络调试。