sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
操作环境是centos7
1.添加用户组
2.添加用户并设置为sftp组
//-g:加入主要组 -s指定用户登入后所使用的shell -M:不要自动建立用户的登入目录
3.修改sftp用户的密码,密码为yingyan@sftp.com
4.创建sftp用户的根目录和属主.属组,修改权限(755)
5.在sftp的目录中创建可写入的目录
6.修改sshd_config的配置文件
把原来的sshd_config配置文件里的subsystem行注释掉
在sshd_config文件最后添加
配置完成后重启配置
7.验证一下
如果你链接服务器的时候出现下面的提示:
> Write failed: Broken pipe
> Couldn't read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:
-
目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。
-
目录开始一直往上到系统根目录为止都不可以具有群组写入权限
- 上面2点一定注意,仔细检查。我就是因为这个问题,导致一直有这个问题。仔细检查配置后,解决问题。