远程服务器使用本地代理的方法
由于笔记本没有GPU,做的又是ai方向,所以经常性的需要远程连接到实验室的服务器运行代码(Pycharm pro + SSH)。但是遗憾的是,服务器并没有魔法,访问不了很多科学网站。今天也是稍微折腾了一下,终于配好了可以。
主要原理就是将本地端口代理到远程端口,然后服务器设定访问代理访问远程端口,就可以实现远程服务器通过本地端口访问网站的效果。
首先打开clash,开启允许局域网和系统代理;接着本地PC机打开cmd命令行窗口,输入以下命令:
ssh -vvv -N -R 7890:localhost:7890 -p <远程服务器端口号> <username>@<server_ip>
-vvv:输出调试信息;
-N:不执行远程命令,只建立 SSH 连接并进行端口转发;
-p:指定远程服务器ssh端口,若为默认的22可不写;
第一个7890指的本地的代理的端口(如果用的clash可以查看),localhost:7890指远程服务器的7890端口。
然后会让你输入SSH连接的账户密码。连接成功后需要挂着窗口(保持SSH隧道)
在服务器端,可以在终端设置如下,就是访问http和https协议的网站都通过代理走服务器的7890端口,从而使用到本地PC机的7890端口。
export http_proxy=http://127.0.0.1:7890; #HTTP
export https_proxy=http://127.0.0.1:7890; #HTTPS
也可以在用户的~/.bashrc文件中添加,这是激活环境会自动执行的文件。
对于jupyter notebook,在运行的代码前添加以下代码并且执行即可:
import os
os.environ["http_proxy"] = "http://127.0.0.1:7890"
os.environ["https_proxy"] = "http://127.0.0.1:7890"