一, FTP 介绍
FTP 是 File Transfer Protocol(文件传输协议, 简称文传协议) 的英文简称, 用于在 Internet 上控制文件的双向传输, 文件共享.
FTP 的主要作用: 让用户连接一个远程计算机 (这些计算机上运行着 FTP 服务器程序), 并查看远程计算机中的文件, 然后把文件从远程计算机复制到本地计算机, 或把本地计算机的文件传送到远程计算机.
小公司用的多, 大企业不用 FTP, 因为不安全, 尽量不要用 FTP, 如果一定要用, 就用 SFTP, 然后用密钥.
二, 使用 vsftpd 搭建 ftp 服务
centos 上默认自带 ftp 的软件包叫: vsftpd
- # yum install -y vsftpd
- # useradd -s /sbin/nologin virftp
- // 名字自定义,-s 指定 shell,/sbin/nologin 表示这个用户不能登录系统.
- //vsftpd 这个软件包可以使用系统级别的软件包, 就比如 user1, 可以用 user1 来登录 vsftpd, 登录形式不是 ssh, 而是 ftp, 登录以后会进入 user1 的家目录下; 但是这样不安全, 所以解决办法是: 给这个 ftp 设置一个虚拟用户, 虚拟用户映射成系统的普通用户, 这个虚拟用户名, 是不能登录服务器这个机器的, 这样就安全很多.
- # vim /etc/vsftpd/vsftpd_login 这个文件叫虚拟用户密码文件.
- // 内容如下, 奇数行为用户名, 偶数行为密码, 多个用户就写多行
- testuser1
- aminglinux
- # chmod 600 /etc/vsftpd/vsftpd_login
- # db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
- // 把文本的密码文件转换成计算机识别的二进制文件
- # mkdir /etc/vsftpd/vsftpd_user_conf
- // 虚拟用户的配置文件所在目录, 这个目录是自定义的, 也需要在配置文件中去定义.
- # cd /etc/vsftpd/vsftpd_user_conf
- # vim testuser1
- // 创建一个虚拟用户的配置文件, 这个文件名必须和用户名保持一致, 加入如下内容
local_root=/home/virftp/testuser1 虚拟用户家目录
anonymous_enable=NO 是否允许匿名用户
write_enable=YES 是否允许可写
local_umask=022 和系统的 umask 保持一致的
anon_upload_enable=NO 是否允许匿名用户可上传
anon_mkdir_write_enable=NO 是否允许匿名用户可创建目录和写
idle_session_timeout=600 超时时间, 超过 600 秒以后就自动断开 ftp 连接
data_connection_timeout=120 数据传输的超时时间
max_clients=10 最大的客户端是多少
- // 标红的是关键配置参数.
- # mkdir /home/virftp/testuser1 创建虚拟用户的家目录
- # touch /home/virftp/testuser1/aming.txt
- # chown -R virftp:virftp /home/virftp
- // 因为最终要映射成 virftp 这个用户, 所以没有权限不行
- # vim /etc/pam.d/vsftpd // 在最前面加上, 这个操作很重要, 定义密码文件的位置, 用来认证的文件.
- #%PAM-1.0
- auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
- account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
- # ls /lib64/security/pam_userdb.so // 这里需要注意, 如果是 centos6, 区分 32 位和 64 位的操作系统, 是 32 就写 32, 这个文件是必须存在的.
- # vim /etc/vsftpd/vsftpd.conf 编辑 vsftpd 的主配置文件
将 anonymous_enable=YES 改为 anonymous_enable=NO
将 #anon_upload_enable=YES 改为 anon_upload_enable=NO 取消注释
将 #anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
这行也取消注释;
再增加如下内容
chroot_local_user=YES
guest_enable=YES 下面行的 guest 要想生效, 这里打开
guest_username=virftp 虚拟用户映射的对应的系统用户
virtual_use_local_privs=YES 告诉这个我们用的是虚拟用户
- user_config_dir=/etc/vsftpd/vsftpd_user_conf
- // 定义虚拟用户配置文件所在路径
- allow_writeable_chroot=YES
- # systemctl start vsftpd // 启动 vsftpd 服务
然后看一下监听的端口是 21, 看一下进程.
测试 ftp
- # yum install -y lftp
- # lftp testuser1@127.0.0.1 口令就是密码,
执行命令 ls, 就能看到之前创建的文件, 看是否正常输出
若不正常查看日志 / var/log/messages 和 / var/log/secure
看支持什么命令, 输入个问号再回车.
常用的有 put,get
lftp testuser1@127.0.0.1:/> get aming.txt 会 get 到当前目录
- lftp testuser1@127.0.0.1:/> quit
- [root@MRX ~]# ls
就可以看到 aming.txt 这个文件
windows 下安装 filezilla 客户端软件, 进行测试
lftp:Linux 上的 ftp 客户端.
filezilla:ftp 的开源的, 免费的, 可以搭建服务, 有客户端, 很好用.
用 xshell 实现和 ftp 的功能: 两种方案
(一) 新建会话
协议改成 SFTP, 名称定义的 yaowei-01-sftp, 主机名是 192.168.93.130, 端口 22. 然后就可以连接了, 用户名 root, 输入密码, 进入后这时候是在 root 下. 然后就可以 get 文件了, 那么 get 的文件保存的路径就在这个会话属性中 SSH 下的 SFTP 中可以自定义本地文件夹, 这里我定义了桌面, get 就会直接传到桌面上, 因为这边是命令行, 所以不太直观.
(二) 使用 XFTP
先 ctrl+d 退出来终端, 然后可以使用 ctrl+alt+f
然后到这个网站里去下载这个插件, 再安装这样的一个过程.
来源: http://www.bubuko.com/infodetail-2595947.html