在 macOS 上配置 SSH 隧道并创建 SOCKS 代理
2021-10-17 tech mac ssh 5 mins 1938 字
创建 SOCKS 代理是一种便捷的方式,可以将所有流量通过 SSH 隧道转发。以下是我在 macOS 上配置 SOCKS 代理的步骤。
创建 SOCKS 代理
-
打开终端: 首先,打开终端应用。
-
运行 SSH 命令: 输入以下命令,创建一个 SOCKS 代理:
ssh -D 1080 user@1.2.3.4
将
user
替换为用户名。这条命令会在本地的 1080 端口创建一个 SOCKS 代理。
配置应用程序使用 SOCKS 代理
接下来,我需要配置支持 SOCKS 代理的应用程序(如浏览器):
-
打开系统偏好设置: 点击苹果菜单,选择
系统偏好设置
。 -
选择网络: 在网络设置中,选择当前使用的网络连接(例如 Wi-Fi),然后点击
高级
。 -
配置代理: 在
代理
选项卡中,勾选SOCKS 代理
,并在代理服务器框中输入127.0.0.1
和端口1080
。 -
保存设置: 点击
好
,然后应用
保存更改。
持续运行 SSH 隧道
如果希望 SSH 隧道在后台持续运行,可以使用以下命令:
ssh -D 1080 -N user@1.2.3.4
在这个命令中,-N
参数表示不执行任何远程命令,只保持连接,这样可以让 SOCKS 代理在后台持续运行。这样,我就可以在需要时安全地转发流量。
高阶玩法
如果不想在 macOS 的系统网络代理设置中使用 SOCKS 代理,以下是几种更灵活的方式,暂时只做记录。这里假设我们想仅代理Citrix viewer
这个软件。
方法 1: 使用 proxychains
工具
proxychains
是一个工具,可以强制指定的应用程序通过代理(如 SOCKS5)进行网络连接。
步骤:
- 安装
proxychains-ng
:- 在 macOS 上安装 `proxychains-ng:
brew install proxychains-ng
- 在 macOS 上安装 `proxychains-ng:
- 配置
proxychains-ng
:- 编辑
proxychains
的配置文件,通常在/usr/local/etc/proxychains.conf
。 - 在文件末尾,添加你的 SSH 隧道的 SOCKS 代理地址,例如:
socks5 127.0.0.1 1080
- 编辑
- 使用
proxychains
启动 Citrix Viewer:- 在 SSH 隧道开启的情况下,使用
proxychains
来启动 Citrix Viewer,让它通过隧道访问网络:proxychains4 /Applications/Citrix\ Workspace.app/Contents/MacOS/Citrix\ Viewer
- 这样,Citrix Viewer 的所有流量都会通过 SSH SOCKS 代理,而不影响 macOS 的全局代理设置。
- 在 SSH 隧道开启的情况下,使用
方法 2: 使用 sshuttle
来转发流量
sshuttle
是一种简单的 VPN 解决方案,可以将指定的流量通过 SSH 隧道路由。不同于系统级 VPN,它允许我们控制流量的范围和转发规则。
步骤:
- 安装
sshuttle
:- 在 macOS 上,使用 Homebrew 安装
sshuttle
:brew install sshuttle
- 在 macOS 上,使用 Homebrew 安装
- 启动
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
-
-
验证代理是否生效
要验证代理是否生效,你可以通过 ping 或 curl 测试是否成功通过代理。例如:
ping 1.2.3.4
方法 3: 使用 Proxifier
Proxifier
是 macOS 上的一款 GUI 工具,允许为特定的应用程序(如 Citrix Viewer)单独设置代理,而不影响系统的其他应用程序。不过要注意的是这是一个付费软件。