ftp server

构建 ftp server[1][2]

1
yum install vsftpd

ftp的配置文件主要有三个,位于/etc/vsftpd/目录下.

  • ftpusers 该文件用来指定那些用户不能访问ftp服务器
  • user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
  • vsftpd.conf vsftpd的主配置文件
1
2
3
4
5
6
7
8
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=NO
anon_mkdir_write_enable=NO
userlist_enable=YES
userlist_file=/etc/vsftpd/vsftpd.user_list
userlist_deny=NO
pasv_min_port=50000
pasv_max_port=60000

sftp server[3][4][5]

构建sftp的目标

  • 安全隔离
  • 访问控制
  • 用户控制
  • 登陆控制
  • 日志审计[6]
  • 操作审计
  • 命令审计

构建 sftp server

透过ssh的sftp

sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mkdir /data/sftp/mysftp
groupadd sftp
useradd -g sftp -d /data/sftp/mysftp -s /bin/false -M mysftp
vim /etc/sshd/sshd_config
# Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f AUTH
Subsystem sftp internal-sftp -l INFO -f AUTH # 指定使用sftp服务使用系统自带的internal-sftp
LogLevel INFO
Match Group sftp # 匹配sftp组的用户,若要匹配多个组,可用逗号分开,也可用“Match User USERNAME”来匹配用户
ChrootDirectory /data/sftp/%u # 限制用户的根目录,将用户锁定在自己的home目录中,使其不可浏览上级目录。并且该行一定要在“Match”语句下方. %u 或者 %h
ForceCommand internal-sftp # 只能用于sftp登录
AllowTcpForwarding no # 禁止用户使用端口转发
X11Forwarding no # 禁止用户使用端口转发
chown root:sftp /data/sftp/mysftp //据说属主必须为root,可以不是root
chmod 755 /data/sftp/mysftp //据说权限应低于等于755,否则登陆报错
mkdir /data/sftp/mysftp/upload
chown mysftp:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload
setenforce 0
systemctl stop firewalld

sftp mysftp@ip-addr

注意事项[7]

  • ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
  • ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755

常见报错

  1. /data/sftp目录权限分配不当,属主必须为root,属组可以为sftp组
1
2
3
4
$ sftp -P 12012 userrenwolecom@10.28.204.62
userrenwolecom@10.28.204.62's password:
packet_write_wait: Connection to 10.28.204.62 port 12012: Broken pipe
Couldn't read packet: Connection reset by peer
  1. 重启sshd后,当前终端不会断开,新建终端输入正确密码后会出现SSH登录闪退(自动关闭终端)问题
1
2
vim /etc/sshd/sshd_config
Match Group username # 此处不应该使用sftp组内的具体某个sftp服务的用户,用该写 sftp组(但是和另一博客的内容有冲突)
  1. sshd 启动报错: /var/empty must be owned by root and not group or world-writable.
1
2
chmod 744 /var/empty
chown -R root. /var/empty

sublime sftp 插件

1
2
3
4
5
6
7
8
9
"upload_on_save": true,	# 保存的时候自动上传到服务器
"sync_down_on_open": true, # 开本地文件编辑的时候,自动下载远程文件来更新本地

"host": "xxx.com",
"user": "xxx",
"password": "xxx",
"port": "22",

"remote_path": "/xxx/xxx",

  1. Linux环境下快速搭建ftp服务器方法介绍 ↩︎

  2. Linux中FTP服务器 ↩︎

  3. sftp 多用户安装与配置 ↩︎

  4. linux如何搭建sftp服务器 ↩︎

  5. Linux 下sftp配置之密钥方式登录详解 ↩︎

  6. CentOS下配置SFTP操作日志 ↩︎

  7. Linux下搭建SFTP服务器 ↩︎