2026 年的 SSH SOCKS5 代理:macOS、Linux、Windows 与 sshuttle:完整指南
Source: Dev.to
创建 SSH SOCKS5 隧道
-D 标志用于创建动态端口转发:SSH 在本地端口上监听并充当 SOCKS5 代理。流量从 SSH 服务器的网络出口出去。
你的应用 → 本地主机:1080 (SOCKS5) → SSH(加密) → 远程服务器 → 互联网在后台启动隧道
ssh -D 1080 -f -C -q -N user@your-server.com验证其正在运行
pgrep -a ssh确认流量通过服务器路由
curl --socks5 127.0.0.1:1080 https://ipinfo.io/ip标志含义
| 标志 | 描述 |
|---|---|
-D 1080 | 在本地端口 1080 上开启 SOCKS5 代理 |
-f | 认证完成后转入后台运行 |
-C | 启用 gzip 压缩 |
-q | 静默模式 |
-N | 不执行远程命令(仅建立隧道) |
macOS 系统范围 SOCKS 代理脚本
将下面的脚本保存为 ~/bin/tunnel,赋予可执行权限(chmod +x ~/bin/tunnel),并使用 sudo 运行。
#!/usr/bin/env bash
NET_SERVICE="Wi‑Fi" # run: networksetup -listallnetworkservices
PORT=1080
SERVER="user@your-server.com"
if [[ "$EUID" -ne 0 ]]; then
echo "Run as root: sudo $0"
exit 1
fi
PID=$(pgrep -f "ssh -D ${PORT}")
if [[ -n "$PID" ]]; then
echo "Disconnecting (PID $PID)..."
kill -9 "$PID"
networksetup -setsocksfirewallproxystate "${NET_SERVICE}" off
echo "Tunnel closed."
else
echo "Connecting to ${SERVER}..."
ssh -D "${PORT}" -f -C -q -N "${SERVER}"
networksetup -setsocksfirewallproxy "${NET_SERVICE}" 127.0.0.1 "${PORT}"
networksetup -setsocksfirewallproxystate "${NET_SERVICE}" on
echo "Connected. System SOCKS proxy active on :${PORT}."
finetworksetup 配置 macOS 系统范围的 SOCKS 代理,因此任何遵循系统代理的应用都会通过隧道进行路由。
Linux:使用 ProxyChains
安装
# Debian/Ubuntu
sudo apt install proxychains4
# Fedora
sudo dnf install proxychains-ng配置 /etc/proxychains4.conf
# Comment out the default Tor line:
# socks4 127.0.0.1 9050
# Add your SSH SOCKS5 proxy:
socks5 127.0.0.1 1080启动 SSH 隧道(同上命令)
ssh -D 1080 -f -C -q -N user@your-server.com通过代理路由任意 CLI 工具
proxychains4 curl https://ipinfo.io/ip
proxychains4 git clone https://github.com/someorg/private-repo使用 sshuttle 的透明 TCP 代理(Linux/macOS)
安装
# macOS (Homebrew)
brew install sshuttle
# Ubuntu
sudo apt install sshuttle路由所有流量(排除 SSH 服务器以避免循环)
sshuttle -r user@your-server.com 0.0.0.0/0 --exclude your-server.com仅路由服务器后面的私有子网
sshuttle -r user@your-server.com 10.0.0.0/8按 Ctrl+C 停止。无需浏览器配置;所有 TCP 连接都会被透明拦截。
Windows 客户端
| 工具 | 步骤 |
|---|---|
| Bitvise SSH Client | 1. 安装 Bitvise。 2. 打开 Services → SOCKS/HTTP Proxy Forwarding。 3. 在 127.0.0.1:1080 上启用 SOCKS5。4. 连接到你的服务器。 |
| Proxifier | 1. 安装 Proxifier。 2. 添加新代理:地址 127.0.0.1,端口 1080,类型 SOCKS5。3. 创建针对你想要路由的应用程序的规则(例如 chrome.exe)。 |
保持隧道活跃(SSH 配置)
向 ~/.ssh/config 添加主机条目,以在空闲期间保持连接。
Host tunnel-server
HostName your-server.com
User youruser
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
Compression yes使用别名启动隧道:
ssh -D 1080 -f -C -q -N tunnel-serverFeature Comparison
| Feature | SSH -D | sshuttle | WireGuard |
|---|---|---|---|
| Setup complexity | 低 | 低 | 中等 |
| Routes all traffic | 否(每应用 SOCKS) | 是(全部 TCP) | 是(全部协议) |
| UDP support | 否 | 否 | 是 |
| Server prerequisites | 仅 SSH | 仅 SSH | wireguard-tools |
| Speed | 良好 | 良好 | 优秀 |
| Best for | 单应用路由 | 完全 TCP 代理 | 永久 VPN |
加固 SSH 服务器
仅使用基于密钥的认证
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519限制特定用户访问 – 在
/etc/ssh/sshd_config中添加AllowUsers youruser使用非标准端口 以减少自动暴力破解尝试
Port 2222每年轮换 SSH 密钥 并从
~/.ssh/authorized_keys中移除旧密钥。
通过这些步骤,你可以在 macOS、Linux 或 Windows 上快速搭建 SSH SOCKS5 代理,按应用或系统范围使用,并可选地用 sshuttle 或 WireGuard 等全流量解决方案替代它。