Centos7搭建sftp服务器

当ssh连接linux服务器的时候传送文件很麻烦,但是用sftp就方便多了,系统有的是默认带有sftp服务的,但是有时候会存在问题导致不能使用,这时需要重新注册服务,以下步骤仅供参考。
一、创建sftp组
创建完成之后使用 cat /etc/group 命令组的信息

groupadd sftp
创建一个sftp用户mysftp并加入到创建的sftp组中,同时修改mysftp用户的密码
useradd -g sftp -s /bin/false mysftp  
passwd mysftp

二、新建/data/sftp/mysftp目录,并将它指定为mysftp组用户的home目录

mkdir -p /data/sftp/mysftp  
usermod -d /data/sftp/mysftp mysftp

三、编辑配置文件/etc/ssh/sshd_config

vi /etc/ssh/sshd_config
将如下这行用#符号注释掉
# Subsystem sftp /usr/libexec/openssh/sftp-server
并在文件最后面添加如下几行内容然后保存
Subsystem sftp internal-sftp

四、设置Chroot目录权限

chown root:sftp /data/sftp/mysftp  
chmod 755 /data/sftp/mysftp

五、新建一个目录供stp用户mysftp上传文件,这个目录所有者为mysftp所有组为sftp,所有者有写入权限所有组无写入权限

mkdir /data/sftp/mysftp/upload  
chown mysftp:sftp /data/sftp/mysftp/upload  
chmod 755 /data/sftp/mysftp/upload

六、关闭selinux并重启sshd服务,然后测试

systemctl restart sshd

七、最后,登录
使用FTP客户端测试的登录

遇到问题上传文件权限不够解决办法

sftp put权限不够

报错如下:

sftp> put play.zip ./
Uploading play.zip to /opt/library/./play.zip
remote open("/opt/library/./play.zip"): Permission denied

原因:
sftp登录以后当前所在目录的owner不是sftp登录者,也就是说当前目录没有write权限,so修改权限,再put上传。如下:

$ sudo chown mysftp -R ./      # ssh登录以后修改目录owner ./文件上传目录(sftp保存文件的目录)
$ exit

登出

$ sftp mysftp@192.168.159.129     # 重新登录sftp
mysftp@192.168.159.129's password: 
Connected to 192.168.159.129.
sftp> cd /opt           # 进入要上传的目录
sftp> put play.zip      # 上传
Uploading play.zip to /opt/library/play.zip
play.zip                                                                    100%   74MB  10.6MB/s   00:07

推荐阅读更多精彩内容

  • 一、实验背景 一、基于对线上服务器的保密和安全,不希望开发人员直接登录线上服务器,因为登录服务器的权限太多难以管控...
    MissHandsome阅读 402评论 0 1
  • 实现的功能: 三个用户,其中一个管理员用户和两个普通用户;管理员用户可以对普通用户的的家目录拥有写的 权限,普通用...
    无所谓_f0aa阅读 58评论 0 0
  • 1、远程连接服务器 远程连接服务器对于管理员来说,是一个很有用的操作。它使得对服务器的管理更为方便。不过方便归方便...
    Zhang21阅读 4,011评论 0 18
  • 一、SFTP简述 二、SFTP服务配置(基于CentOS 7) 三、SFTP常用命令 四、Java代码实现SFTP...
    rm杠rf阅读 811评论 0 5
  • 1、前言 sftp可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SF...
    小尛酒窝阅读 4,912评论 1 5