sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。
CentOS自带 SSH 服务,直接配置即可
1. 查看ssh版本
sftp是基于ssh协议的,首先查看ssh版本,openssh-server版本至少得是4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
2. 创建用户和组
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# groupadd sftp
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# useradd -g sftp -s /sbin/nologin user1
3. 设置目录权限
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# chown root:sftp /home/user1
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# chmod 755 -R /home/user1
#设置用户可以上传的目录,改目录下允许用户上传删除修改文件及文件夹
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# mkdir /home/user1/upload
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# chown -R user1:sftp /home/user1/upload
[root@iZuf6gglwrfdrwtaluuoe8Z ~]# chmod -R 755 /home/user1/upload
4. 修改配置文件sshd_config
vim /etc/ssh/sshd_config
修改为如下:
#注释掉这行 #Subsystem sftp /usr/libexec/openssh/sftp-server #在最后面增加以下6行 Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /home/%u #设定属于用户组sftp的用户访问的根文件夹 ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no #设置不允许SSH的X转发
5. 重启sshd服务
service sshd restart
或者
systemctl restart sshd
6. 验证sftp服务
MacBook-Pro:downloads$ sftp user1@10.10.10.200 user1@10.10.10.200's password: Connected to 10.10.10.200. sftp>ls
upload
sftp>
见到如上字样则证明成功
7. sftp常见命令
远程命令: cd, ls, pwd 本地命令:远程命令前加l , 如 lcd, lls, lpwd
或者
上传命令: put
下载命令:get
退出: bye 或者 exit