目录
创建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需求忘了哪里的问题,可以回来看一下这句。
修改了进行ssh还是被reject看下面这个配置是否注释了。
修改sshd配置文件:
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所在目录会拉取到这个文件
如果你也可以看到上面的类似信息,那么恭喜你,已经完成了sftp服务的搭建,可以指定用户对指定目录进行文件的读写操作了。
注意:这里你如果想拉取到制定文件目录下,可以提前cd切换到你想要的的目录。