一分钟在Linux环境下创建一台SFTP服务器(含账户创建)

FTP是比较常见的一种服务了,很多公司都会有可能使用到FTP服务器,本文将以最简洁的办法使用系统自带的ssh软件在1分钟内搭建一台使用方便的FTP服务器。
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。执行以下脚本在一分钟之内即可完成SFTP服务器的搭建。

#!/bin/bash
#===============================================================================
#          FILE: SftpCreate.sh
#         USAGE: ./SftpCreate.sh 
#   DESCRIPTION: Create a Sftp Server
#       OPTIONS: None
#  REQUIREMENTS: Nene
#        AUTHOR: Geeklp (IVAN DU), geeklp@qq.com
#  ORGANIZATION: GEEKLP
#       CREATED: 2017年12月19日 10时29分12秒
#      REVISION: V1.1
#===============================================================================
set -o nounset                              # Treat unset variables as an error
Users=('chinapay' 'ctbx' 'haoyilian' 'hbgyl' 'huaxia' 'jczh' 'kjb' 'lykj' 'lzkj' 'msyh' 'nyjt' 'pingan' 'xldz' 'yigw' 'yytwallet')
PassWord='1314e'
#modify the /etc/ssh/sshd_config
sed -i '/Subsystem/s/^/#/' /etc/ssh/sshd_config
sed -i '/^#Subsystem/a\Subsystem       sftp    internal-sftp' /etc/ssh/sshd_config
#---------Create SFTPUsers----------
for UserName in ${Users[@]};
do
id -u $UserName>& /dev/null
if [ $? -ne 0 ]; then
mkdir /home/$UserName #创建用户SFTP的root目录
adduser $UserName -d /home/$UserName/$UserName #创建用户并指定用户目录
echo "The account $UserName  was created!"
echo $PassWord | passwd $UserName --stdin  #从标准输入流中读取密码
usermod -s /bin/false $UserName #禁止ssh登录
echo "
Match User $UserName
      X11Forwarding no
      AllowTcpForwarding no
      ForceCommand internal-sftp
      ChrootDirectory /home/$UserName">>/etc/ssh/sshd_config
else
echo "The username $UserName was existed!"
fi
done
systemctl restart sshd
#----------END-----------------------

在以上脚本中有几个关键点:
1、用户目录。出于安全考虑,分别创建独立用户根目录,如果多个用户都在同一个根目录下,其他用户是可以看到别人的用户目录的,这也就是执行创建/home/$UserName/$UserName的目的所在。这也是与网上大部分文章不同的地方之一。当然,用户目录不一定需要用户的home目录,只要用户对目录具有所有权都是可以的。
2、禁止用户的ssh登录,本方案中使用的指定登录脚本为/bin/false,当然也还有其他方案。
3、修改配置文件。在本方案中,涉及到配置文件的2个地方的修改。Subsystem这一行的修改,Match User $UserName后面需要加一行来指定用户根目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值