说明:
上一篇“shell脚本实现代理登陆 一实现基本登陆功能”讲解了把本机当作代理机,调用shell脚本通过本机登陆到其它台服务器上。但如果被登陆服务器本身也是处在防火墙内,也是通过代理服务器开放出来的,这时该怎么办。
好像ssh本身并没有设置代理的地方,有的话请告知一声。这边主要是通过Corkscrew实现。
拓扑:
test服务器,以下简称test,也是我们代理shell脚本的地方
A服务,以下简称A,是我们需要通过shell实现登陆的服务器,A服务器本身也是处在防火墙内,本身也只通过其它代理开放出来。
我们这边要做的,就是通过test的shell脚本->透过A服务本身的代理登陆A。上一篇的话A本身是处在防火墙外,所以简单点。
具体:
1. 编译安装Corkscrew
# wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz # tar zxvf corkscrew-2.0.tar.gz # cd corkscrew # ./configure # make install
2. 修改.ssh/config配置文件,config文件没有就新建,config文件是ssh工具自定义配置文件,/etc/ssh/ssh_config是全局配置文件
# vim .ssh/config //添加以下内容 Host 8.8.8.* ##对8.8.8.*段的登陆通过以下代理 ProxyCommand /usr/local/bin/corkscrew 代理IP 代理port %h %p ~/.ssh/proxyauth ###proxyauth是代理服务器的账号密码 Host 10.* ##这条可以忽略,这条是用于代理登陆openqq的服务器用的,主要是为了让大家看看多个代理,可以这样设置 ProxyCommand /usr/local/bin/corkscrew cvm-proxy.opencloud.qq.com 80 %h %p
3. 添加代理服务器账号密码
# vim .ssh/proxyauth //此处是代理服务器的账号密码,不是我们要登陆的服务器账号 代理账号:代理密码
4. 测试登陆
# ssh root@8.8.8.8 -i A服务器的私钥文件 Last login: Sat Feb 28 17:16:21 2015 from X.x.x.x //x.x.x.x显示的是A的代理服务器IP,因为我们是通过test跳转到A的代理,然后再跳转到A的。
5. 剩下的就是像上一篇一样,往shell脚本里添加ServerArray就可以了。