使用ssh连接服务器,有时候我们需要使用代理来连接目标服务器。这时候有两个方法可以达到这个目的:
- 使用ssh的ProxyCommand选项
- 使用xshell代理
1. 配置ProxyCommand选项
ssh可以通过使用ProxyCommand
设置代理
1 | ssh root@192.168.33.10 -o "ProxyCommand=nc -X connect -x 127.0.0.1:10080 %h %p" |
其中192.168.33.10
是目的服务器ip,%h
表示目标地址即192.168.33.10
,%p
表示目标地址端口,默认22
ProxyCommand
本质上使用的是nc
这个命令来设置代理。下面使用代理服务10.2.3.4的8080来访问目标服务host.example.com的80端口
1 | nc -x10.2.3.4:8080 -Xconnect host.example.com 80 |
我们可以把上面配置写在~/.ssh/config
文件中,那么每次ssh
连接服务器时候,都会使用config
配置中的代理:
1 | Host 192.168.33.10 |
记得将config权限设置成644,否则将报错:Bad owner or permissions
1 | chmod 644 ~/.ssh/config |
然后使用下面命令连接服务器
1 | ssh root@192.168.33.10 |
最后我们在目标服务器运行last
命令来检查代理连接是否OK。
2. 使用xshell配置代理
xshell是一个很好用的ssh客户端
。它支持代理连接。如果我们使用xshell
来连接服务器,那么就可以设置【连接->代理】来使用代理