ssh堡垒机后续--临时文件服务器
在按公司的安全需要搭建完一个简易的堡垒机后(见 linux下自建ssh堡垒机),又遇到了一个迫切需求的一件事---传文件。由于所有所端主机的hosts.allow只允许堡垒机连接,而其他所有服务默认都是deny的。所以无论是服务器上上传文件或是下载文件,都需要通过sftp命令传到堡垒机,再由堡垒机上传或下载。这种来回传的事情让运维人员都感觉是种麻烦,更不要说开发人员了。于是临时文件服务器的需求就产生了。
解决思路
临时搭建一个rsync 或 ftp服务器,在所有的服务器上都可以将临时文件上传到该服务器上,最终给出一个url,通过该URL,就可以wget 下来刚刚上传的文件。
实施方案
最终选择了rsync+http的组合。rsync和http的搭建这里略过,因为比较简单也不是重点,重点是传文件的脚本,脚本内容如下
1#!/bin/bash
2if [[ "$1" != "" ]]; then
3 filename=$(cat /proc/sys/kernel/random/uuid).$(basename $1)
4 echo -ne " 33[5mUploading file... Please waiting! 33[0m"
5 rsync -azq $1 [email protected]::ftptmp/${filename}
6 if [[ "$?" == "0" ]];then
7 echo -e "r 33[KUpload Sucesses!"
8 echo "URL: http://file.361way.com:8888/ftptmp/${filename}";
9 echo -e " 33[31;5mNotice: This file will only keep for 24 hours!!!! 33[0m"
10 else
11 echo "Upload Faild! Please try again!"
12 fi
13else
14 echo "Please input filename!!"
15 exit 1
16fi
注:
- rsync这里没有使用密码,如果有更安全的需要,可以设置下密码。并在rsync的配置中指定密码文件。
- 出于安全考虑,也可以使用shc工具对该脚本进行加密 。
用法
将该脚本保存为gettmpurl ,并赋予可执行权限,放到每台服务器的/usr/bin目录下。以后在各机器上有上传文件的需求时,只需要执行gettmpurl filename就OK了。
1# gettmpurl deploy.sh
2Upload Sucesses!
3URL: http://file.361way.com:8888/ftptmp/38999541-35ab-4d59-8e8e-700291dd966e.deploy.sh
4Notice: This file will only keep for 24 hours!!!!
是不是发现传文件原来也可以是件如此幸福的事情!
为了避免文件服务器爆满,可以每天自动清理一天之前的文件,如下:
1# find rsync目录 -mtime +5 -name "*.*" -exec rm -f {} ;
将以上部分配置到crontab里,每天定期执行就行了。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/linux-temp-files-servers/3685.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.