五十六、FTP介绍、使用vsftpd搭建ftp服务
一、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
然后到这个网站里去下载这个插件,再安装这样的一个过程。
转载于:https://blog.51cto.com/13576245/2115064