2023-06-15 13:02:14 来源:全栈程序员伊爸
作为一个开发人员,翻墙是必备本领。如果你有一个 Linux 服务器,你就能在 Mac 上用一个命令使用 ssh 做代理。
创建 SSH 秘钥
(资料图片仅供参考)
先创建名称为 pxyrsa 的本地秘钥(你也可以使用已有的秘钥,怎样创建 ssh 秘钥如果不会自行网上搜索)。
服务器端添加账号
服务器端 ssh 禁用密码登录,配置 key 登录,添加用户名为 pxy 的账号,只允许作为代理,不允许做其它操作。
使用 root 权限操作,执行以下命令
#创建用户useradd pxy -g nobody -s /bin/false -mmkdir /home/pxy/.sshcd /home/pxy/.ssh#打开授权公钥保存文件vim authorizedkeys#然后输入客户端shh公钥#修改权限chown pxy:nobody -R /home/pxy
Mac 本地代理设置
设置本地 ssh 连接
vim ~/.ssh/config 打开 SSH 配置文件,添加内容:
Host pxyHostName 47.240.48.52Port 22User pxyIdentityFile ~/.ssh/pxyrsa
这样,客户端执行命令 ssh pxy -D 1080-N 即开启代理通道,在本地就可以使用 localhost:1080做代理了。但是,启动代理后,每次还要去系统设置里开启网络连接的 sock5代理,完了又要关闭,麻烦死了。下面教你一个命令搞定。
创建启动代理的脚本
在~/proxy 文件输入以下内容:
#!/bin/shecho"sudo 开启代理..."sudo networksetup -setsocksfirewallproxy "Wi-Fi"127.0.0.11080# 设置“Wi-Fi”网络链接开启 SOCKS5代理,sudo networksetup -setsocksfirewallproxystate "Wi-Fi" on# ssh 只支持 socks5代理,如果你用的是其他代理服务器,可用一下命令启用http(s)代理#sudo networksetup -setwebproxy "Wi-Fi"127.0.0.18000# HTTP proxy#sudo networksetup -setsecurewebproxy "Wi-Fi"127.0.0.14430# HTTPS proxy#sudo networksetup -setwebproxystate "Wi-Fi" on#sudo networksetup -setsecurewebproxystate "Wi-Fi" on#先在~/.bashprofile 中设置如下 alias:#alias proxyclion="export allproxy=socks5://127.0.0.1:1080"#alias proxyclioff="unset allproxy"echo"已启动代理,端口:1080"echo"命令行用 proxyclion/proxyclioff 命令来启用/停用命令行窗口的代理。"echo"使用 Ctrl+C 关闭代理\n"#启动 SSH 代理进程ssh pxy -D 1080-N#关闭代理进程后执行echo"\n\n正在停用“Wi-Fi”代理..."sudo networksetup -setsocksfirewallproxystate "Wi-Fi" off#sudo networksetup -setwebproxystate "Wi-Fi" off#sudo networksetup -setsecurewebproxystate "Wi-Fi" offecho"done."#如果不是通过 Ctrl+C 关闭代理,可再启动代理后用 Ctrl+C 关闭代理
其中“Wi-Fi”为设置代理的网络连接名,如果你用的是台式机,可用命令 sudo networksetup -listallnetworkservices 查看当前使用的网络连接名,把“Wi-Fi”改为你的网络连接名就可以了。
添加自定义命令
把一下命令加入到~/.bashprofile 文件中
#proxyalias proxy="~/proxy"alias proxyclion="export allproxy=socks5://127.0.0.1:1080"alias proxyclioff="unset allproxy"
配置完成。
启动代理:打开一个新的终端窗口,执行命令 proxy,这样一个命令就可以启动代理了。用浏览器打开网址 ipinfo.io 就能看到你当前的公网 IP 了。启动命令行代理: proxy 命令是不启动命令行代理的,如果想在命令行启用代理,还需要执行前面自定义的 proxyclion 命令,然后在当前终端使用命令 curl ipinfo.io 就可以看到你的公网IP了。
有人喜欢修改~/.bashprofile 后,使用 source ~/.bashprofile 命令加载后执行命令,我比较懒,喜欢 Ctrl+N 在新窗口执行命令。