实现SCP和SSH代理连接
日常运维工作中,经常有这样的操作:登录国内中控(一级)--->>>登录海外中控(二级)---->>>登录游戏服务器(三级)。
这样的操作非常繁琐,尤其是给目标服务器传文件时,稍不管理,中间登录的中控服务器就会挤压各种临时文件,使系统内文件分布混乱。
那么,有没有办法直接从一级服务器登录到三级服务器,或上传文件呢?
我们首先想到的办法是:配置网络代理或者写个脚本;脚本将文件上传到二级服务器,再通过session上传到三级服务器,完成后删除二级服务器文件缓存。
其实,SSH和SCP命令可以通过自身参数配置成代理连接,主要使用ssh的ProxyCommand参数,参数值格式“ssh 二级服务器IP nc %h %p”
从参数使用可以看出,内部主要使用nc命令在一级和三级服务器之间进行包转发。
注意:ssh key信任,要进行调整,因为代理的缘故,三级服务器接收到的是一级服务器请求,所以要将一级服务器的公钥,配置到三级服务器authorized_keys文件
配置实例:
- 服务器ip:
- 一级服务器:10.34.10.10
- 二级服务器:10.34.11.11
- 三级服务器:10.34.12.12
- 密钥信任关系:11信任10;12信任11;12信任10
- 实现:登录到一级服务器,通过ssh或scp,登录到三级服务器
- 拷贝数据:
scp -o proxycommand="ssh 10.34.11.11 nc %h %p" ./testfile.txt 10.34.12.12:/root/ - 登录服务器:
ssh -o proxycommand="ssh 10.34.11.11 nc %h %p" 10.34.12.12