sftp搭建

时间:2023-02-03 15:59:42

目标

  • admin 用户(读写)
  • guest 用户(只读)

目录

mkdir -p /opt/sftp/admin/share
# 设置目录权限
chmod -R 755 /opt/sftp

目录权限最高755否则会出现连接异常

sshd[4656]: fatal: bad ownership or modes for chroot directory

开启sftp日志

修改sftp配置

vim /etc/ssh/sshd_config

Subsystem sftp /usr/lib64/ssh/sftp-server -l INFO -f AUTH
# 或者
Subsystem sftp internal-sftp -l INFO -f AUTH

修改reyslog配置

vi /etc/rsyslog.conf

# 添加
auth,authpriv.* /var/log/sftp.log

重启rsyslog和sshd服务

service rsyslog restart
service sshd restart

查看日志

tail -n 10 /var/log/sftp.log

tail命令

tail [参数] [文件] 

参数

  • -f 循环读取
  • -q 不显示处理信息
  • -v 显示详细的处理信息
  • -c<数目> 显示的字节数
  • -n<行数> 显示文件的尾部 n 行内容
  • --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
  • -q, --quiet, --silent 从不输出给出文件名的首部
  • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

用户组

groupadd sftp

用户及权限配置

useradd -g sftp -s /bin/false admin
passwd admin
# 添加用户并指定用户用户组、工作目录、不能登录服务器
useradd -g sftp -d /opt/sftp/admin -M -s /bin/false guest
passwd guest
# admin 目录授权
chown root:sftp /opt/sftp/admin
# 操作目录授权 拥有者为rwx,拥有组rwx,其他r-x
chmod -R 755 /opt/sftp/admin

useradd参数

-M  不要自动建立用户的登入目录
-d<登入目录>  指定用户登入时的起始目录
-s<shell>   指定用户登入后所使用的shell
/bin/false的意思是禁止某个用户登录

sftp配置

vim /etc/ssh/sshd_config

# 注释 Subsystem sftp /usr/libexec/openssh/sftp-server
# 增加
Subsystem sftp internal-sftp
# 用户配置
Match User guest
# 用户的根目录指定参数其权限及其所有的上级文件夹权限
ChrootDirectory /opt/sftp/admin
ForceCommand internal-sftp
# 组配置 多个组逗号隔开
Match Group sftp
# %h代表用户home目录,这样用户就只能在用户目录下活动。也可用%u,%u代表用户名。
ChrootDirectory /opt/sftp/%u
ForceCommand internal-sftp
  • ChrootDirectory 用户的根目录指定参数其权限及其所有的上级文件夹权限,属主必须是 root且只有属主能拥有写权限,即权限最大设置只能是 755
  • Match Group sftp 组配置之前,否则会因为参数 /opt/sftp/%u 优先匹配 /opt/sftp/guest 目录而实际中 guest目录是不存在,造成登录失败
  • 创建的用户有以用户名命名的目录时,不需要单独配置 Match User guest这项,如果没有以用户名命名的目录时则必须配置 Match User guest这项。

验证

service sshd restart
sftp guest@127.0.0.1
sftp admin@127.0.0.1