sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装
文章目录
- 一、服务器搭建分配
- 二、sftp服务器搭建
- 1. 创建sftp组
- 2. 用户组
- 3. 绑定用户组
- 4. 配置
- 5. 目录权限
- 6. 用户、用户组、权限
- 7. 关闭安全策略
- 8. 测试验证
一、服务器搭建分配
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
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
3. 绑定用户组
新建/app/sftp/mysftp目录,并将它指定为mysftp组用户的home目录
[root@localhost ~]# mkdir -p /app/sftp/mysftp
[root@localhost ~]# usermod -d /app/sftp/mysftp mysftp
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
5. 目录权限
设置Chroot目录权限
[root@localhost ~]# chown root:sftp /app/sftp/mysftp
[root@localhost ~]# chmod 755 /app/sftp/mysftp
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
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
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 peer
友情链接;https://gblfy.blog.csdn.net/article/details/109342716