Ubuntu 通过 SSH 端口转发使用本机代理上网
本文最后更新于 2024.11.11 00:05:33
前言
上周,笔者在一台 Ubuntu 18.04 的训练服务器上创建 Python 环境时,遇到了如下报错:
尝试为 anaconda 配置镜像源后,该报错没有任何变化,遂怀疑服务器处于断网环境,使用 ping
和 nslookup
指令检查网络连通性,发现服务器 DNS 服务异常。
由于笔者并没有服务器的管理员权限,无法修改网络相关的配置,因此只能考虑 “曲线救国”,通过 SSH 隧道将本地代理服务端口转发到服务器上,这样服务器就可以通过 SSH 隧道访问互联网。
转发本地代理端口
首先在本地机器上启动代理,这里笔者使用Clash Verge Rev 在 7897 端口开了一个 Direct 模式的代理服务。然后使用以下命令连接服务器:
ssh -R 7890:localhost:7897 <username>@<servr_ip>
这里的 -R
参数表示远程端口转发,即通过 SSH 隧道把服务器 7890 端口的流量转发到本地的 7897 端口。
服务器端代理配置
终端代理
服务器端可以通过设置 http_proxy
和 https_proxy
环境变量来配置代理的使用:
export http_proxy=http://localhost:7890
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
上面的指令效果是临时的,为了方便也可以将其写入 .bsshrc
文件。如果选择后者,记得使用 source .bashrc
更新配置。
conda 代理
除了命令行,conda 也需要单独配置代理服务,具体而言,需要在 .condarc
配置文件中新增如下内容:
proxy_servers:
http:
http://localhost:7890
https:
http://localhost:7890
可以运行以下命令来检查配置是否生效:
conda config --show proxy_servers
结语
至此,我们已经完成了所需的全部配置,现在服务器上的流量能够通过 SSH 隧道转发到本地代理从而实现网络访问。
Ubuntu 通过 SSH 端口转发使用本机代理上网
https://blog.jjl9807.com/archives/27/