sshuttle怎样建立SSH代理隧道

联启 网络工具 13

本文目录导读:

sshuttle怎样建立SSH代理隧道-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 快速上手(最常用的命令)
  2. 更常见的使用场景:仅代理公司内网
  3. 常用参数选项
  4. 与普通 SSH 隧道的区别
  5. 重要提示

sshuttle 和通常的 SSH 隧道(如 -L-D 端口转发)的工作方式不同,它不建立单个具体的“隧道端口”,而是建立一个透明的 VPN 级别的代理

它拦截所有 TCP 流量(或指定网段的流量),并通过 SSH 连接将其路由到远端服务器,然后由远端服务器代为发出。

快速上手(最常用的命令)

假设你想让所有本机的网络流量都通过远程 SSH 服务器 user@your-ssh-server.com 转发:

sudo sshuttle -r user@your-ssh-server.com 0.0.0.0/0
  • sudo:必须的,因为 sshuttle 需要修改系统路由表和拦截网络数据包。
  • -r user@your-ssh-server.com:指定 SSH 连接的远程服务器。
  • 0.0.0/0:表示“所有 IPv4 地址”,即所有流量都走代理。

更常见的使用场景:仅代理公司内网

如果你只需要访问公司内网(0.0.0/8),而不想浪费带宽访问外网,可以这样:

sudo sshuttle -r user@office-vpn.com 10.0.0.0/8

这样,只有访问 x.x.x 网段的流量会通过 SSH 隧道走远程服务器,访问百度、Google 等网站依然走你本机网络。

常用参数选项

  1. --dns:将 DNS 查询也通过隧道发送,解决内网域名解析问题。

    sudo sshuttle --dns -r user@server 10.0.0.0/8
  2. -x <IP>--exclude <IP>:排除某个 IP 不走隧道(直连),避免 SSH 连接把自己踢掉。

    sudo sshuttle -r user@server 0.0.0.0/0 -x your-ssh-server-ip
  3. -v:显示详细日志,方便调试。

  4. --ssh-cmd:指定 SSH 命令(如果使用了非标准端口或自定义密钥)。

    sudo sshuttle -r user@server --ssh-cmd 'ssh -p 2222 -i ~/.ssh/mykey' 10.0.0.0/8

与普通 SSH 隧道的区别

特性 sshuttle 普通 SSH 隧道 (-L/-D)
工作层级 网络层(VPN 模式) 应用层(端口转发)
配置复杂度 极简,一行命令搞定 需要为每个服务手动转发端口
协议支持 仅 TCP 和 DNS (UDP 部分) 取决于转发类型
是否需 sudo 必须(修改路由表) 通常不需要
拦截机制 透明代理(所有应用自动走代理) 需要应用配置代理或连接特定端口

重要提示

  • Python 依赖:sshuttle 是用 Python 写的,远程服务器需要有 Python 环境(Linux 默认自带)。
  • 仅支持 TCP:它不能转发 UDP 流量(如视频通话、在线游戏),但会处理 DNS 查询(通过 --dns)。
  • 断开隧道:按 Ctrl + C 终止 sshuttle 进程,路由表会自动恢复,如果程序崩溃导致网络不通,可以运行 sudo sshuttle --reset-tcp 清理残留规则。

当你不想配置繁杂的 iptables 或 OpenVPN,又想快速、透明地让所有(或指定)程序通过公司内网/代理访问资源时,sshuttle 是比普通 SSH 隧道更优雅的解决方案。

标签: SSH代理隧道

抱歉,评论功能暂时关闭!