cloud-transfer
云环境文件传输, 某些情况下2个环境(比如:测试环境, 生产环境)只能通过外网进行通信,但是又想在2个环境之间传输文件, 这样就可以通过本程序传输了.
传输方式
tcp/加密 SFTP
客户端 -----------> 中转服务器(服务端) -----------> 目标服务器
安装
直接下载即可
使用说明
修改配置文件
编辑配置文件 app.conf
- 修改监听端口 可以在命令行使用 -i 指定
- 临时目录 存储文件的临时路径
- peer对端的IP地址和端口,如果是服务端则不需要修改,如果是客户端则需要配置中转服务器的IP和端口
- secret为的是验证双方是否可信,自行生成修改,可以在命令行参数指定
生成RSA密钥对 用于加密
如果需要加密传输则用以下的命令生成, 如果不需要则跳过该步骤,可以在中转服务器上生成,然后复制到客户端当前路径下,两端要用同一对密钥.
./cloud-transfer rsa -k -b 2048
- -k 生成密钥对
- -b 指定密钥的位数,默认 1024位
在中转服务器上启动服务端
./cloud-transfer cs --mode=server
程序既是服务端也是客户端, 通过--mode 参数指定, 默认是客户端: client
注意: 中转服务器和目标服务器之间要做ssh密钥信任,用于传输文件
客户端加密传输
首先是在客户端动态生成一个32位的随机字符串,然后使用rsa公钥加密该字符串,传输到服务端,服务端用私钥解密, 客户端用该随机字符串使用AES方式把数据加密, 然后服务端接收之后使用AES方式把数据解密还原
加密传输
./cloud-transfer cs -f /tmp/1.exe -d 192.168.33.13 -p 22 -u vagrant -r /tmp -e
- -f 指定要传输文件的路径
- -d 指定目标服务器的IP
- -p 指定目标服务器的SSH端口
- -u 指定目标服务器的SSH用户
- -r 指定目标服务器的文件存储路径,要有写权限
- -e 启用加密传输
直接传输
./cloud-transfer cs -f /tmp/1.exe -d 192.168.33.13 -p 22 -u vagrant -r /tmp