远方有多远,请你告诉我!

Linux搭建SFTP

Posted on By 赵赵赵小白

1. 创建SFTP账号

# 创建组
groupadd sftp

# 创建账号, 不能通过ssh登录
#useradd  -g 所属组 -d 指定家目录 -s /sbin/nologin 用户名
useradd -g sftp -d /upload -s /sbin/nologin zzzxb

# 设置密码
# passwd 用户名
passwd zzzxb

2. 创建SFTP目录

# 创建SFTP目录
mkdir -p /data/sftp/upload
# chomd 用户权限 组权限 其它权限
# 0 无权限 1 x 执行 2 w 写 4 r 写
# root 用户拥有所有权限,组用户没有任何权限,其它用户如果可以可以通过cd进入目录内部,不能ls查看,需要清楚目录内部信息才能进去
chmod 701 /data
# 授权数据目录只能root用户查看
chown -R root:sftp /data/sftp
# 为用户创建一个属于他自己的目录
chown -R zzzxb:sftp /data/sftp/upload

3. 修改配置

vim /etc/ssh/sshd_config

组管理

#Subsystem sftp /usr/libexec/openssh/sftp-server
# 需要把上边这一行注释掉换成下边这个
Subsystem sftp internal-sftp
Match Group sftp
  # 组用户跟目录
  ChrootDirectory /data/sftp
  # 限制用户只能通过sftp命令
  ForceCommand internal-sftp
  # 禁用X11转发功能
  X11Forwarding no
  # 禁用 TCP 转发功能
  AllowTcpForwarding no

检查SFTP状态

  • 检查配置: sshd -t
  • 查看状态: service sshd statussystemctl status sshd
  • 重启服务: service sshd restartsystemctl restart sshd

SFTP 基础命令

  • 查看远程目录: ls
  • 查看本地目录: lls
  • 查看远程路径: pwd
  • 查看本地路径: lpwd
  • 上传文件: put local_file remote_path
  • 上传文件夹: put -r floader_name remote_path
  • 下载文件: get remote_file local_path
  • 下载文件夹: get -r floader_name local_path
  • 退出SFTP: exit
  • 指定端口连接SFTP: sftp -P 端口 username@password
  • 默认端口连接SFTP: sftp username@password

阅读原文