基于 SSH 反向端口转发的服务器联网代理

349 字
2 分钟
基于 SSH 反向端口转发的服务器联网代理

需求描述#

当前服务器本身无法直接访问互联网,但存在稳定的联网下载需求,主要包括以下两类场景:

  1. 使用 apt 更新系统源、安装系统依赖;
  2. 使用 uv 安装 Python、安装项目依赖。

本机具备可用的代理环境,代理软件为 Clash Verge,代理端口为 7897 。因此目标是让服务器通过 SSH 隧道复用本机的代理出口访问互联网。

解决方案#

整体流程#

服务器 apt / uv
服务器 127.0.0.1:7897
SSH 反向端口转发
本机 Clash Verge 127.0.0.1:7897
互联网

建立 SSH 反向端口转发#

在本机执行以下命令:

Terminal window
ssh -R 127.0.0.1:7897:127.0.0.1:7897 \
user@server_ip

执行 expect 脚本:

#!/usr/bin/expect -f
set timeout -1
set SSH_USER "root"
set HOST "10.130.10.166"
set PORT "30412"
set PASSWORD "ChrisYu@822626"
spawn ssh \
-p $PORT \
-R 127.0.0.1:7897:127.0.0.1:7897 \
$SSH_USER@$HOST
expect {
"*yes/no*" {
send -- "yes\r"
exp_continue
}
-re {.*assword.*} {
send -- "$PASSWORD\r"
}
}
interact

测试代理链路#

建立隧道后,在服务器上测试代理是否可用:

Terminal window
curl -I -x http://127.0.0.1:7897 https://pypi.org

配置 apt 代理#

在服务器上创建或覆盖 apt 代理配置:

Terminal window
sudo tee /etc/apt/apt.conf.d/95proxy > /dev/null <<'EOF'
Acquire::http::Proxy "http://127.0.0.1:7897";
Acquire::https::Proxy "http://127.0.0.1:7897";
EOF

然后执行:

Terminal window
sudo apt update

配置 uv 代理#

uv 可以直接使用环境变量中的 HTTP/HTTPS 代理配置。建议写入服务器的 /etc/environment

Terminal window
cat >> ~/.bashrc <<'EOF'
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export ALL_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1,::1
EOF

然后执行

Terminal window
source ~/.bashrc

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

基于 SSH 反向端口转发的服务器联网代理
https://blog.elephantgris.space/posts/1512e01217fe64c7/
作者
Chris Gray
发布于
2026-08-08
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Chris Gray
I am not what happened to me, I am what I choose to be.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
8
分类
2
标签
15
总字数
3,766
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.4
文章许可
CC BY-NC-SA 4.0