SSH连境外的机器如果不走代理的话晚上可能会卡出翔(GFW出来挨打)。我的谷歌云的小主机向大陆的流量收费挺贵的,走代理的话还能省一点钱。
下面的操作默认你有一个支持socks5的代理软件。
Linux
Linux下比较简单,不需要额外安装任何软件,参考了这篇博客。这篇博客介绍了怎么全局代理所有服务器,而不需要每次设置。
ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p" root@ip
上面-X 5是指定socks5协议,-x指定sock5 代理的地址,根据自己的软件改。
Windows
Windows想让ssh走代理有一点麻烦,不自带nc软件,去网上找Windows的第三方版本会少实现一些功能,没有办法用。
所以去下载netcat。下完之后安装,如果用火绒记得把安装路径加进保护区,不然就疯狂报警。
netcat的参数和nc并不同,所以连接命令要稍微改下,参考这份回答。
ssh -o ProxyCommand="ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p" root@ip
SSH Config
用户文件夹下的.ssh文件中加入config文件可以保存服务器信息,便于快速连接。
写法如下:
1 | Host ubuntu |
然后命令行输入ssh ubuntu就可以快速连接。
上面的ProxyCommand可选,如果是Linux就要换成nc的命令。
如果不想自己手写config可以用VS Code的ssh拓展,写好ssh命令它可以帮你写入config文件。
参考
验证代理是否成功
登录成功后,输入 echo $SSH_CLIENT
检测IP是否为代理服务器IP。