2026 年的 SSH SOCKS5 代理:macOS、Linux、Windows 与 sshuttle:完整指南

发布: (2026年3月12日 GMT+8 05:08)
5 分钟阅读
原文: Dev.to

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}."
fi

networksetup 配置 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 Client1. 安装 Bitvise。
2. 打开 Services → SOCKS/HTTP Proxy Forwarding
3. 在 127.0.0.1:1080 上启用 SOCKS5。
4. 连接到你的服务器。
Proxifier1. 安装 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-server

Feature Comparison

FeatureSSH -DsshuttleWireGuard
Setup complexity中等
Routes all traffic否(每应用 SOCKS)是(全部 TCP)是(全部协议)
UDP support
Server prerequisites仅 SSH仅 SSHwireguard-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 等全流量解决方案替代它。

0 浏览
Back to Blog

相关文章

阅读更多 »