跳转至

在服务器上通过本地代理访问外网的配置方法(SSH & HTTP 两种方式)

在某些场景下,我们希望远程服务器访问外网时,能够走本地的代理(如 V2Ray 或其他 SOCKS5 代理),以突破防火墙或加速访问。本文总结了两种常用方式:SSH 端口转发HTTP/HTTPS 代理

一、SSH 方式(远程端口转发)

目的

让服务器上的任意 TCP 流量(如 ssh git@github.com)通过本地代理访问外网。

配置步骤

方法一:命令行临时转发

ssh -f -N -R 10810:127.0.0.1:10810 user@remote-server
  • -R 10810:127.0.0.1:10810:远程服务器监听端口 10810,所有流量转发到本地代理 127.0.0.1:10810
  • -f -N:在后台运行,不打开 shell。
  • 关闭终端或杀掉进程后,隧道会断开。
  • 适合临时使用,无需修改配置文件。

方法二:配置文件自动转发

在本地 ~/.ssh/config 添加:

Host remote-server
    HostName <server-ip>
    User <username>
    RemoteForward 10810 127.0.0.1:10810
  • 每次 ssh remote-server 都会自动创建远程端口转发。
  • 注意:隧道依然依赖本地代理运行,关闭终端隧道会断开。
  • 如果需要自动重连,可以使用 autossh 配合 RemoteForward

二、HTTP/HTTPS 方式(环境变量代理)

目的

让服务器上的 HTTP/HTTPS 请求(如 Git HTTPS 推送、curl、wget)走本地代理。

配置步骤

  1. 本地 SOCKS5 或 HTTP 代理

  2. V2RayN 默认提供 SOCKS5,例如:

    127.0.0.1:10810
    
  3. 如果想直接走 HTTP,需要本地有 HTTP 端口。

  4. 服务器设置环境变量

export http_proxy=socks5://127.0.0.1:10810
export https_proxy=socks5://127.0.0.1:10810
  • 临时启用即可,或者写入 ~/.bashrc

  • Git HTTPS 推送

  • 修改仓库远程地址为 HTTPS:

    git remote set-url origin https://github.com/USERNAME/REPO.git
    git push
    
  • Git 会通过 http_proxy/https_proxy 访问 GitHub。

  • 注意事项

  • HTTP 方式不需要 SSH 端口转发。

  • 只能代理 HTTP/HTTPS,其他 TCP 服务需 SSH 隧道或 proxychains

三、SSH 与 HTTP 代理对比

方式 使用场景 配置复杂度 需服务器配置 优缺点
SSH Git SSH 推送、任意 TCP 允许远程端口转发 优点:全 TCP 可代理;缺点:需 SSH 转发,每次需启动隧道
HTTP/HTTPS Git HTTPS、curl、wget 无需 优点:易用,无需端口转发;缺点:只能代理 HTTP/HTTPS,非 TCP 应用需额外工具

四、实践建议

  • 临时使用:HTTP/HTTPS 方式最简单,Git HTTPS 推送即可。
  • 需要全 TCP 流量代理:SSH 远程端口转发 + ProxyCommand 配合使用。
  • 自动化:可写脚本启动 SSH 隧道,每次需要时运行即可,关闭终端后隧道自动断开。

💡 示例 SSH 隧道启动脚本(可写在本地)

#!/bin/bash
ssh -f -N -R 10810:127.0.0.1:10810 user@remote-server
echo "SSH 隧道已启动,端口 10810 已转发到本地代理"

评论