FTP 和 SFTP
FTP
- FTP 是一种文件传输协议,主要用于数据共享。包括一个 FTP 服务器和多个 FTP 客户端。FTP 客户端通过 FTP 协议在服务器上下载资源
- FTP 使用 21 和 20 端口,21 端口一般用于连接认证,20 端口用于数据传输
- FTP 使用 TCP / IP协议
SFTP
-
SFTP 是一种安全的文件传输协议,它确保使用私有和安全的数据流来安全地传输数据
-
SFTP 要求客户端用户必须由服务器进行身份验证,并且数据传输必须通过安全通道(SSH)进行,不传输明文密码或文件数据
-
SFTP 允许对远程文件执行各种操作,允许从暂停传输,远程文件删除等操作中恢复
-
SFTP 是 SSH 协议的一部分,使用 22 端口通信
搭建 FTP
-
安装 vsftpd(very secure FTP daemon),一款 Linux 上开源免费的 FTP 服务软件
sudo yum install vsftpd -y # -y 自动确认 -
创建一个用户用于连接 FTP
# useradd -g 设置分组,-G 设置多个分组,-d 设置家目录,-s 指定 shell sudo useradd -g ftp -d /var/ftp ftpuser # 设置密码 passwd ftpuser -
编辑
/etc/vsftpd/vsftpd.conf配置文件# 是否允许 anonymous_enable=NO # 是否户登录FTP服务器 local_enable=YES # 是否限制在家目录 chroot_local_user=YES # 是否开启限制用户名单 root_list_enable=YES # 限制名单位置 chroot_list_file=/etc/vsftpd/chroot_list # chroot_local_user 为 YES,限制名单代表不受限制的用户 # chroot_local_user 为 NO,代表受限制的用户 -
启动 FTP 服务
sudo systemctl start vsftpd
配置 SFTP
-
SFTP 在 Open SSH 中已经包含,检查是否安装 SSH 且版本是否高于 4.8p1
sudo yum list installed | grep ssh -
创建 SFTP 用户
# shell 设置为 /sbin/nologin 禁止用作登录 sudo useradd -d /var/ftp -s /sbin/nologin -g ftp sftp # 设置密码 sudo passwd sftp -
配置 SFTP
sudo vi /etc/ssh/sshd_config修改配置文件
# 使用 internal-sftp,提升速度 # Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # 在配置文件最后追加 Match User sftp # 对 sftp 用户进行限制,User 也可以用 Group 限制一组成员 ChrootDirectory /var/ftp # sftp 可访问的根路径 ForceCommand internal-sftp # 指定命令 # 禁止通过端口转发可添加如下两行 X11Forwarding no AllowTcpForwarding no -
保证配置的 ChrootDirectory 路径的所有者为 root,且只有 root 具有写入权限
sudo chown root /var/ftp sudo chmod 755 /var/ftp -
重启服务并测试
sudo systemctl restart sshd # 测试连接 sftp sftp@127.0.0.1 -
SFTP 上传和下载
# 将远程服务器 romote.file 文件下载到本地 download 目录 get /var/ftp/romote.fle ~/download # 将远程服务器 romote 目录下载到本地 download 目录 get -r /var/ftp/romote ~/download # 同样的,put 命令表示上传,-r 表示文件夹在 SFTP 命令行中,执行
ls/cd/rm/mkdir等命令时,在命令前加一个字母l表示操作本地,不加则操作远程服务器