使用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
,成功。