使用ssh端口转发让远程服务器访问本地代理

本地个人使用的proxy能够访问大多数服务,而在远端服务器配置一个自己的proxy又太过麻烦。有什么办法能在ssh的时候让远程可以直接使用本地的代理呢?

Motivation

最近在实验室的服务器上尝试运行vLLM。由于代码里面需要使用transformers库访问huggingface下载模型,于是在服务器shell里面配置了实验室提供的proxy,但结果代码里面访问huggingface依然报错。尝试curl https://huggingface.co/,结果如下:

~/Workspace/vllm$ curl https://huggingface.co/
curl: (56) Received HTTP code 407 from proxy after CONNECT

看来实验室的proxy是用不了。但是我在本地使用自己的proxy可以访问到huggingface,那么能否让ssh的远程服务器直接使用本地的proxy呢?

Solution

修改本地的~/.ssh/config,添加远程端口转发

Host Name
  HostName hostip
  User username
  RemoteForward 17890 localhost:7890

通过以上配置,远程就能直接通过自身的17890端口,使用本地7890端口提供的proxy。
可以在服务器的~/.bashrc中再添加如下配置:

alias setlocalproxy='
    export https_proxy=http://127.0.0.1:17890 http_proxy=http://127.0.0.1:17890 all_proxy=socks5://127.0.0.1:17890
'

然后

~$ setlocalproxy

即可正常使用本地机器提供的代理。
再次curl https://huggingface.co,成功。