SSH动态端口转发可快速在Linux本地1080端口建立加密SOCKS5代理,命令为ssh -D 1080 -C -N -f username@remote_host,无需额外软件,验证可用curl --socks5-hostname 127.0.0.1:1080测试出口IP。

要在Linux上通过SSH动态端口转发快速建立一个本地SOCKS5代理,无需安装额外软件,只要有一台可SSH登录的远程服务器即可启动加密隧道,所有流量经此通道转发时自动加密。
准备前提:确认远程服务器可SSH访问
确保你拥有远程服务器的IP地址、用户名,且该服务器已启用SSH服务(默认端口22),并允许你登录。若使用密钥登录,请提前配置好~/.ssh/id_rsa.pub已写入远程服务器的~/.ssh/authorized_keys中。
执行 ssh -o ConnectTimeout=5 -o BatchMode=yes username@remote_host 测试连通性;若超时或拒绝连接,后续命令无法执行。
【必须确保远程服务器防火墙放行SSH端口,且sshd_config中GatewayPorts no不影响动态转发】
启动动态端口转发(SOCKS5代理)
在本地终端运行以下命令:
ssh -D 1080 -C -N -f username@remote_host
其中:-D 1080 表示在本地1080端口启动SOCKS5代理;-C 启用压缩,对文本类流量有提速效果;-N 表示不执行远程命令,仅建立隧道;-f 让SSH在后台运行。
这一步操作起来很简单,直接把命令复制粘贴回车就行。如果终端没报错也没有退出,说明SOCKS5代理已静默启动。
验证代理是否生效
方法一:用curl测试出口IP
curl --socks5-hostname 127.0.0.1:1080 https://httpbin.org/ip
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
若返回JSON中"origin"字段显示的是远程服务器的公网IP,而非你本地的真实IP,说明转发成功。
方法二:临时设置环境变量后测试wget
export ALL_PROXY=socks5://127.0.0.1:1080 && wget -qO- https://httpbin.org/ip | grep origin
【注意:ALL_PROXY只对当前shell会话生效,新开终端需重新设置】
让常用工具走SOCKS5代理
第一步:Firefox浏览器配置
打开设置 → 网络设置 → 手动代理配置 → SOCKS主机填127.0.0.1,端口填1080 → 勾选“远程DNS”(防止DNS污染)→ 确定。
第二步:终端全局代理(按需启用)
将 export ALL_PROXY=socks5://127.0.0.1:1080 加入 ~/.bashrc 或 ~/.zshrc,然后 source ~/.bashrc 生效。此后curl、wget、git clone等命令默认走该代理。
第三步:图形程序(如qBittorrent、Telegram Desktop)
这类程序通常在“设置→网络→代理”中单独配置SOCKS5,地址127.0.0.1,端口1080,无需认证;不支持SOCKS5的程序(如旧版Chrome)无法直连,需换用支持的浏览器或插件。

















