学校的网络似乎屏蔽了一些端口,导致连不到家里的服务器,于是给 ClashX 里添加了一个跑在 443 端口的 Trojan 以便作为跳板连回家里。
需求如下:local:8080 - proxy:443 - server:22
最开始想直接用 export all_proxy=socks5://127.0.0.1:8080 的方法解决,但发现 SSH 并不走 all proxy,于是请教了大姐姐后得到了以下的方法
# 命令行执行,使用 netcat 设置 HTTP Proxy ssh USER@FINAL_DEST -i ~/.ssh/ecdsa -o "ProxyCommand=nc -X connect -x 127.0.0.1:8080 %h %p" # 也可以添加进 ~/.ssh/config 里面 Host labserver User USERNAME HostName HOSTNAME Port 22 IdentityFile ~/.ssh/ecdsa ProxyCommand nc -X connect -x 127.0.0.1:8080 %h %p
还有一种方法是使用 proxychains-ng (是老熟人呢),方法如下
可恶,SSH 并不吃 proxychains,所以只作为笔记放在这里好了(
# 安装 proxychains-ng brew install proxychains-ng # 将 socks5 Proxy 添加进 /etc/proxychains.conf 中,如果没有这个 config 文件的话可以从 # https://github.com/rofl0r/proxychains-ng/blob/master/src/proxychains.conf 里面拿 socks5 127.0.0.1 8080 # 使用 proxychains 连接 SSH proxychains4 ssh USERNAME@HOSTNAME -p 22 -i ~/.ssh/ecdsa
参考资料:
- Connect with SSH through a proxy — stackoverflow