最近业务需求搞了一下sftp,配合samba感觉还是不错的。
上干货:笔者的环境是centos7.4
1、建立一个名为sftpusers
的sftp
用户组
groupadd sftpusers
2、建立sftp账号(使用-s /bin/false来禁止sftpeb这个账户ssh登录权限)
useradd
-s
/bin/false
-g sftpusers sftp
3、修改sftp密码
passwd sftp #之后输入两次密码成功即可
4、配置ssh和权限;修改为下面内容,保存退出。
UsePAM yes #UsePAM改成yes
#注释掉这行
#Subsystem sftp /usr/libexec/openssh/sftp-server
#添加在配置文件末尾
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
Match Group sftpusers #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory %h #用chroot指定sftp账户登录的默认根目录
ForceCommand internal-sftp #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no
5、修改 /home/sftpeb/目录权限为root所有
chown root:root /home/sftpeb
chmod 755 /home/sftpeb
6、此时sftp用户登录后并不能上传文件,那是因为登录后默认是用户目录,比如/home/sftpeb
,但是该目录是root
用户拥有,因此我们还要修改权限。在用户目录下建立子目录,让sftpusers组
中的用户可读写文件。
cd /home/sftpeb/
mkdir upload
7、授权upload
文件夹读写 ,让子文件夹upload属于sftp
chown -R sftpeb /home/sftpeb/upload
chmod 755 -R /home/sftpeb/upload
8、检查系统selinux是否关闭,如未关闭一定要关闭!(这点很重要,如果不关闭会导致无法上传,出现权限不足问题“Permission denied“)
vim /etc/selinux/config
#将SELINUX=enforcing改为SELINUX=disabled
#getenforce检查,为“Disabled”即表示已关闭selinux
9、重启ssh服务,测试是否可用,测试命令如下
#登录
sftp sftpeb@192.168.2.33
#上传
put /tmp/test.txt
#下载
cd upload
get test.txt
10、如果在windows端登录的话,用sftp工具登录即可,如xftp