创建sftp传输文件位置,添加sftp群组
mkdir -p /data/sftp ##sftp的数据目录
chmod 755 -R /data/sftp ##给ftp用户进入目录
chown root:root -R /data/sftp ##需要使用chroot
groupadd sftp ##配置sftp群组
useradd -d /data/sftp/test -m -g sftp -s /sbin/nologin test ##创建用户并加入sftp组,指定家目录和不允许正常登录
echo '123456' | passwd --stdin test ##为test用户设置密码123456自行修改
修改sshd配置
切记:如果你还想使用ssh连接,那么下面这个配置ForceCommand internal-sftp可以不写,如果你不需要建立远程ssh,那么建议注释。如果后面有ssh需求忘了哪里的问题,可以回来看一下这句。
vi /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server #这行注释掉
GSSAPIAuthentication no #更改为no
UseDNS no #更改为no
X11Forwarding no #更改为no
#直接在文件最后面复制进去-> 添加
Subsystem sftp internal-sftp ##sftp服务使用ssh服务提供的
ForceCommand internal-sftp ##如果ssh 登录不了,请注释它
Match Group sftp ##匹配sftp组
ChrootDirectory /data/sftp/%u ##限制用户在自己家目录
修改完毕后重启sshd服务
systemctl restart sshd
用户目录授权
mkdir /data/sftp/test/upload -p
chown root:root /data/sftp/test
chmod 755 /data/sftp/test
chown test:sftp /data/sftp/test/upload -R #只允许自己操作upload目录
CMD传输测试
先进入cmd 输入命令连接sftp
sftp 用户名@ip #用户名替换为你创建的用户的用户名,例如我上面是test
提示你输入密码,正常输入就行了,隐码形式,例如我上面密码是123456,输完回车
连接成功如下:
上传
put 对应文件路径 /upload
下载
get /upload/文件 #执行完毕后你cmd所在目录会拉取到这个文件
注:这里你如果想拉取到制定文件目录下,可以提前cd切换到你想要的的目录。