在 macOS 上配置 SSH 隧道并创建 SOCKS 代理

创建 SOCKS 代理是一种便捷的方式,可以将所有流量通过 SSH 隧道转发。以下是我在 macOS 上配置 SOCKS 代理的步骤。

创建 SOCKS 代理

  1. 打开终端: 首先,打开终端应用。

  2. 运行 SSH 命令: 输入以下命令,创建一个 SOCKS 代理:

    ssh -D 1080 user@1.2.3.4
    

    user 替换为用户名。这条命令会在本地的 1080 端口创建一个 SOCKS 代理。

配置应用程序使用 SOCKS 代理

接下来,我需要配置支持 SOCKS 代理的应用程序(如浏览器):

  1. 打开系统偏好设置: 点击苹果菜单,选择 系统偏好设置

  2. 选择网络: 在网络设置中,选择当前使用的网络连接(例如 Wi-Fi),然后点击 高级

  3. 配置代理: 在 代理 选项卡中,勾选 SOCKS 代理,并在代理服务器框中输入 127.0.0.1 和端口 1080

  4. 保存设置: 点击 ,然后 应用 保存更改。

持续运行 SSH 隧道

如果希望 SSH 隧道在后台持续运行,可以使用以下命令:

ssh -D 1080 -N user@1.2.3.4

在这个命令中,-N 参数表示不执行任何远程命令,只保持连接,这样可以让 SOCKS 代理在后台持续运行。这样,我就可以在需要时安全地转发流量。

高阶玩法

如果不想在 macOS 的系统网络代理设置中使用 SOCKS 代理,以下是几种更灵活的方式,暂时只做记录。这里假设我们想仅代理Citrix viewer这个软件。

方法 1: 使用 proxychains 工具

proxychains 是一个工具,可以强制指定的应用程序通过代理(如 SOCKS5)进行网络连接。

步骤:

  1. 安装 proxychains-ng
    • 在 macOS 上安装 `proxychains-ng:
      brew install proxychains-ng
      
  2. 配置 proxychains-ng:
    • 编辑 proxychains 的配置文件,通常在 /usr/local/etc/proxychains.conf
    • 在文件末尾,添加你的 SSH 隧道的 SOCKS 代理地址,例如:
      socks5  127.0.0.1 1080
      
  3. 使用 proxychains 启动 Citrix Viewer:
    • 在 SSH 隧道开启的情况下,使用 proxychains 来启动 Citrix Viewer,让它通过隧道访问网络:
      proxychains4 /Applications/Citrix\ Workspace.app/Contents/MacOS/Citrix\ Viewer
      
    • 这样,Citrix Viewer 的所有流量都会通过 SSH SOCKS 代理,而不影响 macOS 的全局代理设置。

方法 2: 使用 sshuttle 来转发流量

sshuttle 是一种简单的 VPN 解决方案,可以将指定的流量通过 SSH 隧道路由。不同于系统级 VPN,它允许我们控制流量的范围和转发规则。

步骤:

  1. 安装 sshuttle:
    • 在 macOS 上,使用 Homebrew 安装 sshuttle
      brew install sshuttle
      
  2. 启动 sshuttle:
    • 使用 sshuttle 来启动隧道,并将指定的流量通过 SSH 隧道。

      如果希望 sshuttle 在后台运行,可以添加 -D 参数

      sshuttle -r user@1.2.3.4 10.0.0.0/8
      sshuttle -r user@1.2.3.4 1.2.3.5/32 9.0.0.0/8 10.0.0.0/8 -D
      
  3. 验证代理是否生效

    要验证代理是否生效,你可以通过 ping 或 curl 测试是否成功通过代理。例如:

    ping 1.2.3.4
    

方法 3: 使用 Proxifier

Proxifier 是 macOS 上的一款 GUI 工具,允许为特定的应用程序(如 Citrix Viewer)单独设置代理,而不影响系统的其他应用程序。不过要注意的是这是一个付费软件。


没有ESC键,在 iPad 上触发 Escape confd 模板语法