基于多个SSH服务器构建SSH代理

前一篇文章使用了scp跨两个内网进行文件传输,其实还可以有一种更简单的办法进行处理,就是构建SSH代理。

编辑.ssh目录下的config文件

nano ~/.ssh/config

然后指定不同的服务器,注意其中的ProxyCommand指令:

Host bridge1
  HostName alias1.example.com

Host private1
  ProxyCommand ssh -q bridge1 nc -q0 private1 22

Host private2
  ProxyCommand ssh -q private1 nc -q0 private2 22

这样,就构建了private1、bridge1两个ssh代理,访问private2服务器可以将其当做一个本地服务器直接使用,也可以直接scp进行数据的上传和下载。

参考:http://sshmenu.sourceforge.net/articles/transparent-mulithop.html

两台服务器的缺失数据同步

一台主服务器上的部分数据文件缺失,需要在另一台备份服务器上拷贝回来,但不想使用rsync进行全局同步,因此就需要对缺失文件进行直接处理。
但文件数量比较少的时候,直接scp回来即可,但数量较多的时候,就不能人工处理了,需要使用shell脚本处理:
1. 生成缺失文件列表,如mis.txt
2. 让主服务器可以用key方式ssh到备份服务器上
3. 逐个文件导入:
while IFS='' read -r line ;do scp user@backup-server:/path/$line .; done < mis.txt

两台服务器皆为ubuntu环境。