开启sftp服务日志并限制sftp访问目录
目录导航
开启sftp日志
修改sshd_config
vim /etc/ssh/sshd_config
注释掉Subsystem行,然后写入新Subsystem,信息如下
Subsystem sftp internal-sftp -l INFO -f local5
LogLevel INFO
效果如下:
修改syslogs
vim /etc/rsyslog.conf
在最后增加如下配置
auth,authpriv.*,local5.* /var/log/sftp.log
重启服务查看日志
/etc/init.d/rsyslog restart
/etc/init.d/sshd restart
tailf /var/log/sftp.log
限制sftp用户操作目录
前提说明
如果要让sftp用户只能使用规定的目录,则需要再配置文件中开启ChrootDirectory,并限定目录作为sftp用户登录的根目录.
但这里规定的根目录,属主必须是root,文件夹权限只能是755,因此sftp用户对此根目录只有读取权限,需要再在根目录下创建一个属主为改sftp用户的文件夹,用于该用户上传数据
由此规则,可以产生两种sftp方案
1. home目录做根目录
创建用户时,不指定-M参数,默认会在home目录下生产该用户的家目录,用户对该目录具有完全操作权限,且不能访问其他用户的家目录,因此适合作为sftp目录
- ChrootDirectory写法
- ChrootDirectory /home/
2. 单独创建目录做根目录
单独创建一个目录做根目录,然后再创建下级的操作目录,此方法需要按要求配置主目录及下级目录的权限和属主等信息
- 用户
- 创建用户 加-M参数
- 主目录
- 创建主目录 /data/sftp
- 授权 755
- 属主 root.root
- 下级目录
- 创建下级目录 /data/sftp/test_sftp
- 授权 755
- 属主 test_sftp.test_sftp
- ChrootDirectory写法
- ChrootDirectory /data/sftp/
方法1实操
- 创建用户
useradd test_sftp && echo "123456"|passwd --stdin test_sftp
- 修改sshd_conf
vim /etc/ssh/sshd_config
# 在最后增加以下关键字
Match User test_sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
重要说明:配置在Match User字段中的用户,会被禁止使用ssh方式登录系统
- 重启sshd服务
/etc/init.d/sshd restart
方法2实操
- 创建用户
useradd test_sftp && echo "123456"|passwd --stdin test_sftp
- 创建主目录并授权
mkdir -p /data/sftp/
#chown -R root.root /data/sftp/
#chmod 755 /data/sftp/
说明:注释掉的命令默认不用执行,写出来是为了避免乱做其他授权
- 创建操作目录并操作
mkdir -p /data/sftp/test_sftp
chown -R test_sftp.test_sftp /data/sftp/test_sftp
#chmod 755 /data/sftp/test_sftp
说明:注释掉的命令默认不用执行,写出来是为了避免乱做其他授权
- 修改sshd_conf
vim /etc/ssh/sshd_config
# 在最后增加以下关键字
Match User test_sftp
ChrootDirectory /data/sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
- 重启sshd服务
/etc/init.d/sshd restart