前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一分钟在Linux环境下创建一台SFTP服务器(含账户创建)

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

作者头像
耕耘实录
发布2018-12-20 12:14:14
1.4K0
发布2018-12-20 12:14:14
举报
文章被收录于专栏:耕耘实录耕耘实录

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服务器的搭建。

代码语言:javascript
复制
#!/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='Neoby1314'
#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 /bash/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/UserName的目的所在。这也是与网上大部分文章不同的地方之一。当然,用户目录不一定需要用户的home目录,只要用户对目录具有所有权都是可以的。 2、禁止用户的ssh登录,本方案中使用的指定登录脚本为/bin/false,当然也还有其他方案。 3、修改配置文件。在本方案中,涉及到配置文件的2个地方的修改。Subsystem这一行的修改,Match User $UserName后面需要加一行来指定用户根目录。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年12月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档