sftp使用ssh协议,内容加密相比于vsftp要更安全可靠,sftp没有单独的守护进程,它使用的是sshd守护进程。
设置之前注意查看openssh的版本,版本必须大于4.8p1(注:查看版本 ssh -V )
1. groupadd sftp (注:创建一个sftp用户组)
2.useradd -g sftp -d /home/用户名 -s /sbin/nologin 用户名 (注:创建用户,属于sftp组,并指定目录,不允许登录shell)
3.passwd 用户名(注:设置用户密码,用户才能生效)
4.chown root:sftp /home/用户名 (注:修改用户的属主属组)
5.chmod -R 755 /home/用户名 (注:设置权限)
6.vim /etc/ssh/sshd_config (注:修改配置文件)
注释内容:
Subsystem sftp /usr/libexec/openssh/sftp-server(注:使用 # 注释掉这一行)
添加/修改内容:
Subsystem sftp internal-sftp(注:设置sftp服务使用系统自带的 internal-sftp)
ChrootDirectory 项目地址(注:项目地址设置为sftp操作区域 如“/data/www/” 让sftp登录只能操作 www/ 下的内容)
ForceCommand internal-sftp(注:指定sftp命令)
AllowTcpForwarding (no | yes ) (注:非必须不要设置成no )
Match User 之前创建的sftp用户名(注:这行用来匹配用户)
X11Forwarding no(注:no 是不允许做X的ssh转发)
7.systemctl restart sshd(注:一定要重启服务,不然无效)
8.sftp 用户名@127.0.0.1(注:在本地测试登入出现 sftp> 则登入成功)
Directive ‘UseDNS’ is not allowed within a Match block
如果有这个报错就把配置文件里的UseDNS no 注释掉