操作前需先开启telnet服务,防止修改sshd_config后,sshd服务启不了
systemctl start telnet.socket
1 创建用户和用户组
创建sftpusers用户组,专门用于sftp用户
groupadd sftpusers
创建test用户,将test用户的shell设置为/sbin/nologin禁止ssh登陆,且不创建用户家目录
useradd -g sftpusers -s /sbin/nologin -M test
设置用户密码
passwd test
2 编辑 /etc/ssh/sshd_config
注释Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下内容:
Subsystem sftp internal-sftp
Match User zjjkzc
ChrootDirectory /gfsdata/jkzc
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
多个用户,每个用户需要设置不同目录,可用以下方法:
Subsystem sftp internal-sftp -l INFO -f local5
Match User zjjkzc
ChrootDirectory /gfsdata/jkzc
Match User zhizhen_wz
ChrootDirectory /gfsdata/zhizhen_wz
Match User jt_wz
ChrootDirectory /gfsdata/zhizhen_wz
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
修改后重启sshd服务,
systemctl restart sshd
如果重启报错,可以通过以下命令进行测试
/usr/sbin/sshd -t
3 用户目录
创建sftp根目录,使sftp用户在该目录下活动
目录权限设置上要遵循2点:(需要格外注意)
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
4 测试
sftp test@ip
sftp和ftp虚账号结合使用
背景描述
目标端A通过sftp采集目录A下的a1和a2中的文件;
源端a和源端b通过ftp上传文件到目录a1和目录a2中。
操作步骤:
1 账号创建
分别创建sftp账号test; ftp虚账号 vtest1、vtest2(归属于账号vtest)
2 账号权限
sftp账号权限设置:
若需要让test账号采集到vtest1和vtest2上传的文件,可将用户组vtest加到test上
usermod -a -G vtest test
设置vtest1和vtest2账号权限,增加anon_umask参数,让文件上传后的权限为644权限
local_root=/gfsdata/jkzc/jtkd
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_umask=022
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)