警告:在操作之前,先打个多个会话窗口,避免操作不当,引起无法登录服务器,例如这样
背景:
1.需要搭建sftp服务器(一般服务器自带sftp服务,此处不再赘述)
2.sftp只允许访问指定目录,不能访问其他目录(重点)
在一些生产环境中,有时,用户需要传数据到服务器,但是配置ftp服务比较麻烦,此时,我们可以为用户创建sftp账户,让用户使用sftp来上传下载所需的数据。Sftp账号即为系统账号,将账户密码给用户,用户除了能登录sftp上传下载数据外,还可以访问系统中的其他目录,由此,给我们的系统带来了安全隐患,再次,我们需要配置用户只能通过sftp登录系统下载上传所需的数据。
useradd joshua317
echo abc123 | passwd --stdin joshua317
设置sftp的账号权限需要通过修改sshd_config配置文件进行,sshd_config配置文件修改内容如下:
vi /etc/ssh/sshd_config
#内容修改如下
# Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉此行并添加一下行
Subsystem sftp internal-sftp
Match User joshua317 #此处设置控制的用户,也可以设置为组
ChrootDirectory /home/joshua317 #允许用户访问的目录,此处我们设置为用户家目录,根据具体情况自己定义
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
配置完成后需要重启服务:
service sshd reload
或者
systemctl restart sshd #根据不同的操作系统选择不同命令,这里服务器版本是centos7.X
此处配置完我们用另一台机器测试登录,会出现错误,使用win系统sftp客户端(FileZilla)同样也不能正常登陆
[root@xxxxxxxxxxxxxxx ~]# sftp joshua317@172.17.xxx.xxx
Connecting to 172.17.xxx.xxx...
joshua317@172.17.xxx.xxx's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
这是由于没有配置目录的正确权限,我们需要设置用户访问的目录的权限
重点:sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755,
但此目录下的文件及目录的权限我们可根据自己的需求任意设置。
chown root:root /home/joshua317/ #不要使用chown -R
chmod 755 /home/joshua317/ #不要使用chmod -R
#设置该sftp账号不允许登录
usermod joshua317 -s /sbin/nologin
#然后重启
service sshd reload
至此,我们的sftp配置已经完成,
使用linux测试:
使用windows客户端FileZilla测试:
经过上面的设置后用户可正常浏览下载目录中的文件,但是用户无法上传文件。
此时需要在/home/joshua317/下建立属主属组为joshua317的目录,并给/home/joshua317下的目录设置acl权限即可。
mkdir /home/joshua317/test
chown joshua317:joshua317 /home/joshua317/test
chmod 755 /home/joshua317/test
#查看
getfacl /home/joshua317/test
测试是否可以在/homne/joshua317/test下面创建文件或者目录
如果又需要创建一个用户joshua318,可以继续通过匹配用户的形式,只需要进行如下操作
首先创建一个用户
#添加一个用户,指定用户组为joshua317,目录为/home/joshua317,账号不允许登录
useradd -g joshua317 -s /sbin/nologin -m joshua318
echo abc123 | passwd --stdin joshua318
调整sshd_config
vi /etc/ssh/sshd_config
Match User joshua318
ChrootDirectory /home/joshua317
#重启sshd
service sshd reload
但如果有很多个用户,此时就需要通过组进行匹配
vi /etc/ssh/sshd_config
Match Group joshua317
ChrootDirectory /home/joshua317
#然后重启
service sshd reload
测试是否成功:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有