背景
1、指定已用户只能通过sftp访问,不能通过SSH登陆,并锁定在特定的目录下
2、遇到的问题:
修改/etc/ssh/sshd_config配置文件重启sshd导致其他用户登录报错:/bin/bash: No such file or directory
1、建立SFTP用户组
groupadd sftp
2、建立sftp用户
useradd -d /home/was -m -s /bin/false -g sftp was
3、设置密码
passwd was
4、创建指定sftp目录
mkdir /sftp
5、备份ssh配置文件并修改
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_back
vi /etc/ssh/sshd_config
1)注释该行,添加新配置
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
2)打开注释
# Example of overriding settings on a per-user basis
#Match User was #指定单用户的话使用这个配置,是使用的是用户组
Match group sftp
X11Forwarding no #禁止X11转发
AllowTcpForwarding no #禁止tcp转发
# PermitTTY no
ForceCommand internal-sftp #指定sftp命令,不能ssh连接
ChrootDirectory /sftp #指定用户被锁定到的那个目录,为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写
注意踩坑点:配置 ChrootDirectory /sftp 必须在这个 Match group sftp 配置后面 不然重启sshd后登录所有账号都报错:/bin/bash: No such file or directory
一般出现问题会在ChrootDirectory directory上,这个目录的用户和用户组必须是root:root,在这个目录下建对应sftp账号的目录并给这个用户相应权限
如:
mkdir -p /sftp/was
chown was:sftp /sftp/was
chmod 755 /sftp/was
6、重启SSH服务
service sshd restart
7、验证
ssh登录验证
sftp登录验证