很多网络运维、或者站长需要通过 ssh 来管理服务器、vps,如果不凑巧,你和服务器之间相隔了一堵 GFW,那么由于 GFW 会分析 ssh 数据包,结果就是导致稍微慢一点的网络就会让命令卡一分钟。
GFW 现在完全有能力分析 ssh 流量特征,以判断你是在真的使用 ssh 配置服务器,还是使用它作为代理来浏览网页。
如果有什么好的办法让ssh像浏览器那样指定翻墙就好了。
事实上,还真有。
ProxyCommand
这是 ssh 自带的一条命令,它能够允许ssh通过一个现有的ssh会话来发送命令。简单来说,就是能够允许 ssh via ssh。
——那么,我们需要两个vps咯?
其实不然,我们还要使用到下面的一个工具:
Corkscrew
它让上文中提到的 ProxyCommand 以为一个 Http 代理是 ssh,这样,就实现了 ssh via http代理。
对于 macOS 来说,安装也很简单,直接使用 Brew 安装即可:
1 |
brew install corkscrew |
总之,你还需要一个 http 代理,目前来说,几乎所有的 shadowsocks 客户端以及其他各种代理客户端都会提供 http 和 https 代理——这里作为我本地环境,使用的是 surge, 它的本地默认 http 和 https 端口是 6152
所以,我们编辑文件 ~/.ssh/config (如果没有就创建一个新的)里边加入新内容:
1 2 |
Host * ProxyCommand corkscrew 127.0.0.1 6152 %h %p |
这样就默认对所有的 ssh 回话启动这条命令了——当然,有surge作为后端自动选择线路,所以对所有会话都启用也无所谓了。
怎么使用智能选择路径?对我来说目前我已经在使用白名单了。
这下,再如同往常一样使用ssh命令登录服务器吧,记得登录之后再退出再登录,这样你就能看到上一次登录的 IP 地址了,它应该已经是你前置代理的出口地址了 :)
什么?你说 VPN ? 别搞笑了,gfw打vpn准确率也差不到哪里去。
本文由 落格博客 原创撰写:落格博客 » 让 SSH 走代理连接服务器
转载请保留出处和原文链接:https://www.logcg.com/archives/2112.html
压根用不了啊
surge mac 分分钟搞定它
哈哈,那时候还没Surge~
我发现一个很奇怪的事情,国内现在可以直连google storage了嘛?wget竟然能下载回来,上午一台国内服务器还超时来着…下午就好了(つд⊂)
gfw在重启升级呢吧
前几天的时候发现就可以了,或许是日常掉砖吧