SSH隧道
在进行服务器运维时,经常会遇到需要代理来访问某些资源的情况。本文将介绍如何通过 SSH 隧道,让远程服务器共享使用本地电脑的代理,实现优雅的科学上网解决方案。
背景
通常我们在本地电脑上都配置了代理软件(如 Clash),但远程服务器往往没有代理。如何让远程服务器也能使用上我们本地的代理呢?这就需要用到 SSH 的端口转发功能。
原理解释
SSH 隧道技术允许我们将本地端口转发到远程服务器。通过建立一个加密的通道,远程服务器可以通过这个通道访问本地电脑的代理服务。
1 | [远程服务器] <--- SSH隧道 ---> [本地电脑] <--- 代理 ---> [互联网] |
具体步骤
1. 前提条件
- 本地电脑已安装并运行代理软件(如 Clash,默认端口 7890)
- 能够通过 SSH 连接到远程服务器
- 确保本地代理软件正常工作
2. 建立 SSH 隧道
在本地电脑的终端中执行:
1 | ssh -R 7890:127.0.0.1:7890 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 用户名@服务器IP |
参数说明:
-R 7890:127.0.0.1:7890
:将远程服务器的 7890 端口转发到本地的 7890 端口-o ServerAliveInterval=60
:每 60 秒发送一次心跳包-o ServerAliveCountMax=3
:最多允许丢失 3 次心跳包
然后根据提示输入服务器用户的密码:
3. 配置服务器代理
在服务器终端中执行:
1 | export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890 |
4. 验证代理是否生效
在服务器上执行:
1 | curl -v https://github.com |
如果能够正常访问,说明代理配置成功。
持久化配置
如果想让代理设置持久生效,可以将代理配置命令添加到 Shell 的配置文件中:
1 | # 编辑 ~/.bashrc 或 ~/.zshrc |
注意事项
- 安全性考虑:SSH 隧道是加密的,相对安全
- 连接维护:保持 SSH 连接不断开,否则代理会失效
- 带宽限制:代理流量会经过你的本地电脑,注意带宽占用
- 临时使用:这种方法适合临时使用,长期使用建议直接在服务器上配置代理
常见问题排查
隧道无法建立
- 检查本地代理是否正常运行
- 确认端口号是否正确
- 检查服务器防火墙设置
代理失效
- SSH 连接是否断开
- 本地代理软件是否正常运行
- 环境变量是否正确设置
Clash设置
在默认的代理设置基础上进行了如下修改, 但是不确保这是正常访问的必须操作:
以mac的ClashX Pro为例, 在更多设置
中
结论
通过 SSH 隧道共享本地代理是一个简单而优雅的解决方案,特别适合临时需要代理访问的场景。它不需要在服务器上安装额外的软件,配置简单,安全可靠。
- 标题: SSH隧道
- 作者: ffy
- 创建于 : 2025-01-17 13:53:33
- 更新于 : 2025-05-09 17:36:47
- 链接: https://ffy6511.github.io/2025/01/17/其他/SSH隧道/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论