macOS 终端通过代理访问网络的方法(包括ssh)

终端是默认不会走代理的(一直以为是会),今天网络问题始终连不上AWS的服务器,没办法找解决办法。
在终端试一下当前出口:

curl cip.cc

返回

IP    : ********
地址    : 中国  上海
运营商    : 联通

数据二    : 上海市 | 联通

数据三    : 中国上海上海市 | 联通

URL    : http://www.cip.cc/**********

说明确实不走代理, 因为shadowsocks是全局模式,web看到的出口是香港
解决方法:(比较喜欢在当前终端解决问题,不修改全局,有问题关掉这个终端窗口就没事了)

vim .bash_profile

加入

# proxy list
alias proxy='export all_proxy=socks5://127.0.0.1:1086' #1086不是写死的端口,是根据每个人本地socks5真是端口
alias unproxy='unset all_proxy'

OK,让配置生效

source ~/.bash_profile

这个终端proxy别名就生效了,于是开始设置代理生效

proxy

再次查看出口

curl cip.cc

IP    : **********
地址    : 中国  香港 

数据二    : 香港 | 特别行政区

数据三    : 中国香港香港

URL    : http://www.cip.cc/***************

生效。

本来以为这样就可以解决ssh连不上AWS的问题,结果当然不行,原因嘛,应该如下:
socks,http代理等使用的是TCP或UDP协议, 而ping命令则是ICMP协议, 所以proxychains4对ping命令无效
想当然这样以为吧,大致是这个方向的原因。

总得解决,因为让终端走代理的最终目的是为了ssh到AWS啊
还是G找
终于发现一个最简易的问题
命令

ssh myserver -o "ProxyCommand=nc -X 5 -x 127.0.0.1:1086 %h %p"

终于就走了代理,服气

当然还有个没试过的复杂方法,也记录一下

vim ~/.ssh/config
# 添加以下内容
Host 52.* # 这里可以通配也可以指定IP
    ProxyCommand nc -X 5 -x 127.0.0.1:1079 %h %p
    # "5" 是 SOCKS 5, "1079" 是本地socks端口