Centos 7设置SFTP&FTP
近期需要在个人VPS设置SFTP和FTP服务,可以上传删除的SFTP,但是禁止该用户通过SSH登录。
SFTP
升级
yum update
创建用户组sftp
用户组名为sftp
groupadd sftp
创建用户test
用户名可以随机取,在此取名为test
useradd -G sftp -s /sbin/nologin test
讲解
-s: 禁止用户ssh登录
-G:加入sftp用户组
创建密码
passwd test
修改配置文件
修改配置文件sshd_cinfig
vim /ect/ssh/sshd_config
重点(我就是在这里踩坑了)
##下面这行注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
##后面加入
Subsystem sftp internal-sftp
#注意,以下要 放在 本文件的最后行,否则 root用户无法登陆**
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
说明
Match Group sftp 匹配sftp用户组中的用户
ChrootDirectory %h 只能访问默认的用户目录(自己的目录),例如 /home/test
设置目录权限
chown root:sftp /home/test
chgrp -R sftp /home/test
chmod -R 755 /home/test
#设置用户可以上传的目录,改目录下允许用户上传删除修改文件及文件夹
mkdir /home/test/upload
chown -R test:sftp /home/test/upload
chmod -R 755 /home/test/upload
重启ssh
systemctl restart sshd.service
测试
新建一个 终端链接,或者在 FTP 客户端中使用SFTP 模式链接(输入相关的IP用户名及端口)
sftp test@192.1.1.1
Q&A
出现以下错误:
sftp Connection to closed by remote host.
或者
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
这个就是该用户根目录的权限问题,chown root:sftp /home/test 设置为root用户即可解决,目录权限为755
检测 /etc/selinux/config中SELINUX 是否为SELINUX=disabled
还有sshd_config
里面的内容一定要放在文件末尾,不然不会root不能登录
FTP
Centos7中默认已经安装了sshd服务(sftp), vsftpd需要手动安装
安装并启动FTP服务
安装vsftpd
yum install -y vsftpd
启动vsftpd
service vsftpd start
Ubuntu: lsof -i:21
Centos: netstat -nltp | grep 21
此时, 访问ftp://IPaddr 就可浏览主机上的 /var/ftp目录了
配置 FTP 权限
了解 vsftpd 配置
vsftpd 的配置目录为 /etc/vsftpd, 包含下列的配置文件 :
a. vsftpd.conf 为主要配置文件
b. ftpusers 配置禁止访问 FTP 服务器的用户列表
c. user_list 配置用户访问控制
阻止匿名访问和切换根目录
匿名访问和切换目录都会给服务器带来安全风险, 我们把这两个功能关闭.
编辑 /etc/vsftpd/vsftpd.conf
, 找到下面两处配置并修改:
# 禁用匿名用户 YES 改为NO
anonymous_enable=NO
# 禁止切换根目录 删除或#
chroot_local_user=YES
编辑完成后保存配置, 重新启动 FTP 服务
service vsftpd restart
创建 FTP 用户
创建一个用户 ftpuser
useradd ftpuser
为用户 ftpuser
设置密码
passwd ftpuser
或
echo "new_password" | passwd ftpuser --stdin
限制该用户仅能通过FTP访问
限制用户 ftpuser 只能通过 FTP 访问服务器, 而不能直接登录服务器
usermod -s /sbin/nologin ftpuser
为用户分配主目录
为用户 ftpuser
创建主目录并约定
/data/ftp
为主目录, 该目录不可上传文件
/data/ftp/pub
文件只能上传到该目录下
在/data
中创建相关的目录
mkdir -p /data/ftp/pub
设置访问权限
chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub
设置为用户的主目录
usermod -d /data/ftp ftpuser
Test
至此, FTP服务已经搭建完成, 可以使用各种第三方客户端来测试访问FTP服务器
访问前, 记得关闭防火墙
service firewalld stop
如果需要使用root登录连接FTP服务, 需要配置 /etc/vsftpd/user_list
和 /etc/vsftpd/ftpusers
, 将文件中的root
注释
大家有兴趣可以访问我的博客 DreamWord