ssh堡垒机后续--临时文件服务器

在按公司的安全需要搭建完一个简易的堡垒机后(见 linux下自建ssh堡垒机),又遇到了一个迫切需求的一件事---传文件。由于所有所端主机的hosts.allow只允许堡垒机连接,而其他所有服务默认都是deny的。所以无论是服务器上上传文件或是下载文件,都需要通过sftp命令传到堡垒机,再由堡垒机上传或下载。这种来回传的事情让运维人员都感觉是种麻烦,更不要说开发人员了。于是临时文件服务器的需求就产生了。

解决思路:

临时搭建一个rsync 或 ftp服务器,在所有的服务器上都可以将临时文件上传到该服务器上,最终给出一个url,通过该URL,就可以wget 下来刚刚上传的文件。

实施方案:

最终选择了rsync+http的组合。rsync和http的搭建这里略过,因为比较简单也不是重点,重点是传文件的脚本,脚本内容如下

#!/bin/bash
if [[ "$1" != "" ]]; then
    filename=$(cat /proc/sys/kernel/random/uuid).$(basename $1)
    echo -ne "33[5mUploading file... Please waiting!33[0m"
    rsync -azq $1 rsynctmp@file.361way.com::ftptmp/${filename}
    if [[ "$?" == "0" ]];then
        echo -e "r33[KUpload Sucesses!"
        echo "URL: http://file.361way.com:8888/ftptmp/${filename}";
        echo -e "33[31;5mNotice: This file will only keep for 24 hours!!!!33[0m"
    else
        echo "Upload Faild! Please try again!"
    fi
else
    echo "Please input filename!!"
    exit 1
fi

注:

1、rsync这里没有使用密码,如果有更安全的需要,可以设置下密码。并在rsync的配置中指定密码文件。

2、出于安全考虑,也可以使用shc工具对该脚本进行加密 。

用法:

将该脚本保存为gettmpurl ,并赋予可执行权限,放到每台服务器的/usr/bin目录下。以后在各机器上有上传文件的需求时,只需要执行gettmpurl  filename就OK了。

# gettmpurl deploy.sh
Upload Sucesses!
URL: http://file.361way.com:8888/ftptmp/38999541-35ab-4d59-8e8e-700291dd966e.deploy.sh
Notice: This file will only keep for 24 hours!!!!

是不是发现传文件原来也可以是件如此幸福的事情!

为了避免文件服务器爆满,可以每天自动清理一天之前的文件,如下:

# find  rsync目录  -mtime +5 -name "*.*" -exec rm -f {} ;

将以上部分配置到crontab里,每天定期执行就行了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注