如何通过SSH端口转发为云服务器提供代理服务

如何通过SSH端口转发为云服务器提供代理服务

引入

众所周知,国内的云服务器(比如各大平台的学生云)都是无法正常下载国外的各种包。虽然常用的包都有国内镜像,但总有镜像覆盖不到的地方。因此,为云服务器配置代理是很有必要的。

在此分享如何通过 SSH 远程端口转发,为云服务器提供代理服务。

步骤

1. 本地代理服务

首先自己的电脑要有代理服务,比如某 C 开头的软件默认在本地的 7890 端口提供代理服务。

2. SSH 端口转发

SSH 端口转发是一种通过 SSH 连接安全地将网络流量从一个本地端口传送到远程服务器的机制。SSH 端口转发有两种主要类型:本地端口转发和远程端口转发。

远程端口转发是将远程服务器上的一个端口的流量转发到本地计算机上的目标主机和端口。通常用于在远程服务器上访问本地网络服务。所以,这就是我们为云服务器提供代理服务的关键。

建议通过 SSH 工具连接服务器,一般 SSH 工具也会带有 SSH 端口转发的工具,比手动输入指令方便很多。

比如我使用的是 NextSSH, 配置好后点击即可开启转发

设置端口转发

3. 终端设置代理

通过 SSH 进入云服务器终端后,可以通过指令设置环境变量来使用代理:

1
2
export http_proxy=socks5://127.0.0.1:7890
export https_proxy=socks5://127.0.0.1:7890

但是这样设置仅在本会话中有效,每次输入指令也不方便。所以推荐修改终端的配置文件来添加指令别名,方便快速开启、关闭代理:

在终端配置文件 ~/.bashrc~/.zshrc 中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
alias proxy="
export http_proxy=socks5://127.0.0.1:7890;
export https_proxy=socks5://127.0.0.1:7890;
export all_proxy=socks5://127.0.0.1:7890;
export no_proxy=localhost,127.0.0.1;
export HTTP_PROXY=socks5://127.0.0.1:7890;
export HTTPS_PROXY=socks5://127.0.0.1:7890;
export ALL_PROXY=socks5://127.0.0.1:7890;
export NO_PROXY=localhost,127.0.0.1;"
alias unproxy="
unset http_proxy;
unset https_proxy;
unset all_proxy;
unset no_proxy;
unset HTTP_PROXY;
unset HTTPS_PROXY;
unset ALL_PROXY;
unset NO_PROXY"

之后就可以在 SSH 终端里通过 proxyunproxy 指令来打开、关闭云服务器的代理了(当然,前提是你开启了 SSH 端口转发)

最后

这个操作的关键在于 SSH 远程端口转发。你完全可以举一反三,将自己电脑上的端口转发到云服务器来实现自己的想法。

希望你能有所收获~

作者

AkiChase

发布于

2024-01-10

更新于

2024-01-10

许可协议