在上一篇《使用 root 用户登陆到腾讯云的主机》的结尾,我提到在特定网络环境下通过 ssh 访问服务器的连接会被屏蔽,这两天时不时的就会琢磨怎么解决这个问题,今天突然想到,ssh 能不能走代理访问到服务器?
谷歌了一番,发现真的可以……
当然,这样做的前提是得自备一个梯子。我在 macOS 用的是 ShadowsocksX-NG,在偏好设置里可以看到它在本地的 1086 端口开启了 Socks5 代理,那么通过代理访问服务器可以这么做:
# 这里假设你已经在 ~/.ssh/config 为 myserver 配置了连接信息
$ ssh myserver -o "ProxyCommand=nc -X 5 -x 127.0.0.1:1086 %h %p"
连接成功后,可以运行 tac /var/log/auth.log | grep sshd 查看自己最近是从什么 IP 地址登陆的,你会发现登陆的 IP 和你在 ShadowsocksX-NG 中当前使用的服务器节点的 IP 是一样的。
当然,-o 后面的 ProxyCommand 也是可以在 ~/.ssh/config 中配置的:
$ cat ~/.ssh/config
Host myserver
HostName xxx.xxx.xxx.xxx
ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p
Port 22
User root
IdentityFile ~/.ssh/my_id_rsa
可以给走代理的 Host 取一个别名例如 myserver-proxy,这样就可以自己选择要不要走代理连接 ssh 了。
参考链接: