sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装

文章目录

一、服务器搭建分配

ip

作用

192.168.0.114

sftp服务器

192.168.0.108

测试应用服务器

二、sftp服务器搭建
1. 创建sftp组

创建完成之后使用cat /etc/group命令组的信息

[root@localhost ~]#  groupadd sftp
[root@localhost ~]# cat /etc/group

linux 如何搭建sftp服务器_vim

2. 用户组

创建一个sftp用户mysftp并加入到创建的sftp组中,同时修改mysftp用户的密码为123456

[root@localhost ~]# useradd -g sftp -s /bin/false mysftp
[root@localhost ~]# passwd mysftp

补充:​​useradd -g sftp -s /bin/false mysftp​​这条命令意思是:mysftp用户是不能使用bash的权限。如果让mysftp用户是能使用bash的权限权请执行下面这一行命令即可。

[root@localhost ~]# useradd -g sftp -s /bin/bash mysftp

linux 如何搭建sftp服务器_linux_02

3. 绑定用户组

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

[root@localhost ~]# mkdir -p /app/sftp/mysftp
[root@localhost ~]# usermod -d /app/sftp/mysftp mysftp

linux 如何搭建sftp服务器_用户组_03

4. 配置

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

vim /etc/ssh/sshd_config

将如下这行用#符号注释掉

# Subsystem      sftp    /usr/libexec/openssh/sftp-server

并在文件最后面添加如下几行内容然后保存

Subsystem       sftp    internal-sftp    
Match Group sftp
ChrootDirectory /app/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

linux 如何搭建sftp服务器_linux_04

5. 目录权限

设置Chroot目录权限

[root@localhost ~]# chown root:sftp /app/sftp/mysftp 
[root@localhost ~]# chmod 755 /app/sftp/mysftp

linux 如何搭建sftp服务器_用户组_05

6. 用户、用户组、权限

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

[root@localhost ~]# mkdir /app/sftp/mysftp/upload  
[root@localhost ~]# chown mysftp:sftp /app/sftp/mysftp/upload
[root@localhost ~]# chmod 755 /app/sftp/mysftp/upload

linux 如何搭建sftp服务器_vim_06

7. 关闭安全策略

关闭selinux并重启sshd服务,然后测试
1、临时关闭:输入命令setenforce 0,重启系统后还会开启。
2、永久关闭:输入命令vim /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。

vim /etc/selinux/config
SELINUX=disabled
setenforce 0

#重启sshd服务
systemctl restart sshd.service

linux 如何搭建sftp服务器_linux_07

8. 测试验证

在其他服务器上进行验证,sftp 用户名@ip地址

[root@localhost ~]# sftp mysftp@192.168.0.114
The authenticity of host '192.168.0.114 (192.168.0.114)' can't be established.
ECDSA key fingerprint is SHA256:Mxfzo4OtS1aI7Pil0wemA1YsT7a2Vvnutugi1WFjk3A.
ECDSA key fingerprint is MD5:f4:ba:b8:a1:de:3f:57:c5:c8:35:61:e3:34:3e:28:3b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.114' (ECDSA) to the list of known hosts.
mysftp@192.168.0.114's password:
Connected to 192.168.0.114.
sftp> ls
upload
sftp> cd upload/
sftp> pwd
Remote working directory: /upload
sftp> exit
[root@localhost ~]#

操作记录:

[root@localhost ~]#  groupadd sftp
[root@localhost ~]# cat /etc/group
...
sftp:x:1000:
[root@localhost ~]# useradd -g sftp -s /bin/false mysftp
[root@localhost ~]# passwd mysftp
Changing password for user mysftp.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# mkdir -p /app/sftp/mysftp
[root@localhost ~]# usermod -d /app/sftp/mysftp mysftp
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# vim /etc/ssh/sshd_config
[root@localhost ~]# chown root:sftp /app/sftp/mysftp
[root@localhost ~]# chmod 755 /app/sftp/mysftp
[root@localhost ~]# mkdir /app/sftp/mysftp/upload
[root@localhost ~]# chown mysftp:sftp /app/sftp/mysftp/upload
[root@localhost ~]# chmod 755 /app/sftp/mysftp/upload
[root@localhost ~]# vim /etc/selinux/config
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl restart sshd.service
[root@localhost ~]#

如果遇到下面异常,请阅读我的下篇博客

[root@localhost home]# sftp sftpuser@localhost
Connecting to localhost...
sftpuser@localhost's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by