发现了一种远程VS Code走代理的办法,因为其不依赖特定的Shell,所以可以解决各种VS Code Server下载不下来、Cursor无法使用高级模型之类的问题,同时也兼顾其他终端工具(如OpenCode)。
现有的方法大多基于修改Shell配置文件,但VS Code启动时不一定会先加载特定Shell;另外一些方法是修改VS Code的启动配置,但这种方法只能解决VS Code本身的问题;还可以在本地设置环境变量,然后用 SendEnv 传递给远程,但这种方法需要污染本地的环境变量,或在ssh以外包一层,前者不够优雅,后者兼容性不行。
如果两端都使用比较新的OpenSSH,那么可以使用 SetEnv。其在连接远端的时候先于Shell传递环境变量,从而所有通过SSH运行的命令都可以读取。
在远端的 ~/.ssh/sshd_config 中添加:
AcceptEnv HTTP_PROXY HTTPS_PROXY ALL_PROXY NO_PROXY而在本地的 ~/.ssh/config 中,根据远端能访问到的代理服务器(如运行的v2rayN、Clash Meta等)填写代理地址(不需要双引号):
Host ******-pc-proxied
User cyp0633
HostName ******-pc
SetEnv HTTP_PROXY=http://127.0.0.1:10808 HTTPS_PROXY=http://127.0.0.1:10808 ALL_PROXY=http://127.0.0.1:10808 http_proxy=http://127.0.0.1:10808 https_proxy=http://127.0.0.1:10808 all_proxy=http://127.0.0.1:10808然后连接这个 -proxied,就可以让远端的VS Code Server、Cursor等工具走代理了。
目前看起来没有任何LLM直接推荐这种办法,所以我暂且认为记录下来有一定意义。