centos7 启用sftp(CentOS7服务搭建----搭建SFTP)


centos7 启用sftp(CentOS7服务搭建----搭建SFTP)(1)

SFTP协议服务器

简介:

  sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp有着几乎一样的语法和功能,但注意:sftp和ftp(vsftpd)一点关系都没有。SFTP 是 SSH的一部份,是一种传输文件数据至sftp服务器的协议。本身没有守护进程,是包含在ssh中,同样使用ssh端口22。

目标:

实现sftp多个用户可上传下载文件,并且各个用户都拥有不同的根目录实现安全隔离。

脚本演示:

sftp服务搭建,本人已经写成脚本,一起来看看脚本执行得效果先

centos7 启用sftp(CentOS7服务搭建----搭建SFTP)(2)

sftp自动化脚本执行效果

注意⚠️:要实现邮件发送,老猴将抽时间在接下来的下一篇实践操刀

远程登录操作:

centos7 启用sftp(CentOS7服务搭建----搭建SFTP)(3)

SFTP远程登录操作

实操搭建:

  版本说明:

OS系统版本:CentOS 7.7

SSH版本:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

centos7 启用sftp(CentOS7服务搭建----搭建SFTP)(4)

系统版本及ssh版本

sftp服务器搭建方式:

  1、sftp本事植根于ssh,有ssh就有sftp,所以直接在系统上新建一个用户即可完成搭建,这种方式最简单,但最不安全,sftp用户登陆之后可以随意切换目录,很不安全,生产环境中绝对是不能接受的安全威胁。

  2、标准的、安全的sftp的搭建

第一步:新建sftp用户组(任意组名,为便于识别,此例用户组取名sftp)

groupadd sftp

第二部:新建sftp用户(任意用户名,为便于识别,此例用户组取名sftpu01)

useradd -g sftp -s /bin/false sftpu01

注意⚠️:安全考虑,需要禁止sftp用户ssh登陆到系统,所以新建用户有-s/bin/false选项

第三部:为sftp用户设置12位随机密码(位数和复杂度按需设置)

PassWd=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 12 | tr -d "\n";echo)

echo -e "${PassWd}"|passwd --stdin sftpu01

注意⚠️:生成复杂随机密码的方式很多,此例使用urandom实现

第四部:为sftp用户建立根目录和可读写数据目录并设置用户和用户组(sftp用户的根目录此例为/data_sftp/sftpu01)

新建目录及修改所属组/主

mkdir -p /data_sftp/sftpu01 && chown root:sftp /data_sftp/sftpu01

修改用sftp用户根目录

usermod -d /data_sftp/sftpu01 sftpu01

建立sftp用户可读写的数据目录

mkdir -p /data_sftp/sftpu01/data01

为sftp用户可读写的数据目录设置用户及用户组权限

chown -R sftpu01:sftp /data_sftp/sftpu01/data01

chmod 755 /data_sftp/sftpu01/data01


第五部:修改/etc/ssh/sshd_config文件(注意⚠️,此步骤只在首次部署sftp操作,后期新加sftp用户不需要在执行)

将Subsystem sftp /usr/libexec/openssh/sftp-server这一行修改为:

#Subsystem sftp /usr/libexec/openssh/sftp-server,即在行前添加#号或删除

新添加内容:

Subsystem sftp internal-sftp -l INFO -f AUTH #这行指定使用sftp服务使用系统自带的internal-sftp

Match Group sftp #这行用来匹配用户组

ChrootDirectory /data_sftp/sftpu01%u #用chroot将用户的根目录指定到/data_sftp/sftpu01 ,这样用户就只能在/data/sftp下活动

AllowTcpForwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

ForceCommand internal-sftp -l INFO -f AUTH #指定sftp命令


第六步:重启ssh,使之生效

service sshd restart

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页