配置FTP服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置FTP服务相关的知识,希望对你有一定的参考价值。
[toc]
配置FTP服务
一、FTP介绍
我们之前传输文件所用的是rzsz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题!
1.1 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
小公司用的多,大企业不用FTP,因为不安全。大多数的企业使用git。
二、使用vsftpd搭建ftp服务
2.1 安装服务:
centos上自带vsftpd
[[email protected] ~]# yum install -y vsftpd
2.2 创建用户:
[[email protected] ~]# useradd -s /sbin/nologin virftp
这儿可能会有疑问,我们创建了这个用户为什么不可以nologin呢?安全
然后我们就用到了如下虚拟用户:
2.3 配置虚拟用户:
[[email protected] ~]# vim /etc/vsftpd/vsftpd_login //奇数行为用户名,偶数行为密码,多个用户就写多行!
[[email protected] ~]# vim /etc/vsftpd/vsftpd_login
//用户为zhdy密码为asd9577;zhdy02密码为asd9772
xavi01
linux001
xavi02
linux002
2.4 授权并把密码文件转换为二进制可识别配置文件:
[[email protected] ~]# chmod 600 /etc/vsftpd/vsftpd_login //为了安全,不允许其他人修改,我们设置为600
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //再次把密码文件转换为计算机可以识别的配置文件。
[[email protected] ~]# ls -l /etc/vsftpd/
总用量 36
-rw------- 1 root root 125 8月 3 2017 ftpusers
-rw------- 1 root root 361 8月 3 2017 user_list
-rw------- 1 root root 5030 8月 3 2017 vsftpd.conf
-rwxr--r-- 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root 32 3月 29 13:10 vsftpd_login
-rw-r--r-- 1 root root 12288 3月 29 13:11 vsftpd_login.db
2.5 创建虚拟用户的配置目录:
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf //创建配置文件
[[email protected] ~]# cd /etc/vsftpd/vsftpd_user_conf
2.6 创建用户配置文件(一定要和你创建的用户名字一致。)
vim xavi001 //加入如下内容
local_root=/home/ftpuser/xavi //虚拟用户的家目录
anonymous_enable=NO //是否允许匿名用户
write_enable=YES //是否允许可写
local_umask=022 //创建新目录和文件的权限
anon_upload_enable=NO //是否允许匿名用户上传
anon_mkdir_write_enable=NO //是否允许匿名用户可创建
idle_session_timeout=600 //连接后没有任何操作的超时时间,空闲时间段
data_connection_timeout=120 //数据传输超时时间
max_clients=10 //最大允许连接的clients客户端
[[email protected] ~]# cd /etc/vsftpd/vsftpd_user_conf
[[email protected] vsftpd_user_conf]# vim xavi001
local_root=/home/virftp/xavi001
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
2.7 配置虚拟用户家目录:
[[email protected] vsftpd_user_conf]# mkdir /home/virftp/xavi01
[[email protected] vsftpd_user_conf]# touch /home/virftp/xavi01/xavi.txt
[[email protected] vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
2.8 配置认证的路径+文件
[[email protected] vsftpd_user_conf]# 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
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
-----------------------------------------------------------
//在最前面加上
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
- 查看下文件是否存在
[[email protected] vsftpd_user_conf]# ls /lib64/security/pam_userdb.so
/lib64/security/pam_userdb.so
2.9 配置vsftpd的主配置文件:
[[email protected] vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
将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_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
user_config_dir:定义user用户的配置路径。
2.10 启动并查看启动状态:
[[email protected] vsftpd_user_conf]# systemctl start vsftpd
[[email protected] vsftpd_user_conf]# ps aux | grep vsftpd
root 2938 0.0 0.0 53216 580 ? Ss 19:57 0:00 /usr/sbin/vsftpd /etcvsftpd/vsftpd.conf
root 2940 0.0 0.0 112680 976 pts/0 S+ 19:57 0:00 grep --color=auto vsftpd
[[email protected] vsftpd_user_conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1128/rpc.mountd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1882/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1064/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1061/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1694/master
tcp 0 0 0.0.0.0:54910 0.0.0.0:* LISTEN 1067/rpc.statd
tcp 0 0 0.0.0.0:37663 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp6 0 0 :::46701 :::* LISTEN -
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::20048 :::* LISTEN 1128/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 2938/vsftpd
tcp6 0 0 :::60662 :::* LISTEN 1067/rpc.statd
tcp6 0 0 :::22 :::* LISTEN 1064/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1061/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1694/master
tcp6 0 0 :::2049 :::* LISTEN -
总结:21端口FTP; 22端口SSHD; 23端口TELNET
三、在客户端的FTP测试
3.1 服务器端安装
[[email protected] vsftpd_user_conf]# yum install lftp
3.2 查看服务端的文件
[[email protected] ~]# lftp [email protected]
口令:
lftp [email protected]:~> ls
drwxr-xr-x 2 1006 1007 22 Mar 29 11:40 xavi001
lftp xa[email protected]:/> ?
!<shell-command> (commands)
alias [<name> [<value>]] attach [PID]
bookmark [SUBCMD] cache [SUBCMD]
cat [-b] <files> cd <rdir>
chmod [OPTS] mode file... close [-a]
[re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>]
du [options] <dirs> exit [<code>|bg]
get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args>
help [<cmd>] history -w file|-r file|-c|-l [cnt]
jobs [-v] [<job_no...>] kill all|<job_no>
lcd <ldir> lftp [OPTS] <site>
ln [-s] <file1> <file2> ls [<args>]
mget [OPTS] <files> mirror [OPTS] [remote [local]]
mkdir [-p] <dirs> module name [args]
more <files> mput [OPTS] <files>
mrm <files> mv <file1> <file2>
[re]nlist [<args>] open [OPTS] <site>
pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>] pwd [-p]
queue [OPTS] [<cmd>] quote <cmd>
repeat [OPTS] [delay] [command] rm [-r] [-f] <files>
rmdir [-f] <dirs> scache [<session_no>]
set [OPT] [<var> [<val>]] site <site-cmd>
source <file> torrent [-O <dir>] <file|URL>...
user <user|URL> [<pass>] wait [<jobno>]
zcat <files> zmore <files>
3.3 输入 ? 是用来查看操作的命令。使用 get+文件名 来下载一个文件到根目录!
报错!
lftp [email protected]:/> get xavi.txt
get: Access failed: 550 Failed to open file. (xavi.txt)
lftp [email protected]:/> exit
四、使用xshell来传输,其原理就是:使用sftp模式登录服务器
输如账号密码链接,还是主机xavi001的账号密码
4.1 实验
sftp:/tmp> cd /usr/local/src/
sftp:/usr/local/src> ls
drwxr-xr-x 10 root root 4096 Mar 13 23:35 .
drwxr-xr-x 21 root root 254 Mar 13 23:43 ..
-rw-r--r-- 1 root root 21040959 Mar 18 2017 mysql-5.5.55.tar.gz
drwxr-xr-x 31 7161 31415 4096 Mar 18 2017 mysql-5.5.55
-rw-r--r-- 1 root root 316320366 Mar 18 2017 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
-rw-r--r-- 1 root root 541295045 Feb 28 22:23 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
-rw-r--r-- 1 root root 8638793 Oct 21 03:39 httpd-2.4.29.tar.gz
-rw-r--r-- 1 root root 1072661 Oct 23 01:33 apr-1.6.3.tar.gz
-rw-r--r-- 1 root root 554301 Oct 23 01:33 apr-util-1.6.1.tar.gz
drwxr-xr-x 11 501 games 4096 Mar 17 15:57 httpd-2.4.29
drwxr-xr-x 28 xavidsf xavidsf 4096 Mar 17 15:33 apr-1.6.3
drwxr-xr-x 21 xavidsf xavidsf 4096 Mar 17 15:40 apr-util-1.6.1
drwxr-xr-x 17 xavi xavi 4096 Mar 13 22:53 php-5.6.30
-rw-r--r-- 1 root root 15011816 Jan 19 2017 php-5.6.30.tar.bz2
-rw-r--r-- 1 root root 19274631 Mar 2 11:14 php-5.6.30.tar.gz
-rw-r--r-- 1 root root 15732452 Jun 7 2017 php-7.1.6.tar.bz2
drwxrwxr-x 19 xavi xavi 4096 Mar 2 16:02 php-7.1.6
-rw-r--r-- 1 root root 230093 Mar 11 20:35 phpredis-develop.zip
drwxr-xr-x 11 root root 4096 Mar 11 20:43 phpredis-develop
-rw-r--r-- 1 root root 314581668 Nov 28 2016 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
-rw-r--r-- 1 root root 19274631 Jan 19 2017 php-5.6.30.tar.gz.1
-rw-r--r-- 1 root root 981093 Jul 11 2017 nginx-1.12.1.tar.gz
drwxr-xr-x 9 xavidsf xavidsf 186 Mar 13 23:40 nginx-1.12.1
sftp:/usr/local/src> get nginx-1.12.1.tar.gz
Fetching /usr/local/src/nginx-1.12.1.tar.gz to nginx-1.12.1.tar.gz
sftp: received 958 KB in 0.06 seconds
在桌面找到了nginx的安装包
五、xshell使用xftp传输文件
- 在xshell界面上按下“ctrl+alt+F”弹出以下对话框
- 点击“Download Xftp”
- 点击下载链接
- 选择评估版
-
填入信息
- 提示在邮箱里有下载链接
- 下载完成后,开始安装,注意选择免费版
- 安装完成后,在打开的虚拟机界面上按下“ctrl+Alt+F”,输入账号密码,如下:
- 选中文件后直接鼠标拖拽就可以到达window界面中
六、使用pure-ftpd搭建ftp服务
6.1 安装并配置pure-ftpd
[[email protected] ~]# yum install -y pure-ftpd
[[email protected] ~]# vim /etc/pure-ftpd/pure-ftpd.conf
#找到这行,删除前面#号
# PureDB /etc/pure-ftpd/pureftpd.pdb
6.2 开启pure-ftpd服务,这里注意vsftpd服务和pure-ftpd服务都是使用了21端口,必须关闭一个才能使用
[[email protected] ~]# systemctl stop vsftpd
[[email protected] ~]# systemctl start pure-ftpd
[[email protected] ~]# ps aux | grep pure-ftpd
root 3001 0.0 0.0 202480 1208 ? Ss 10:11 0:00 pure-ftpd (SERVER)
root 3003 0.0 0.0 112680 972 pts/0 S+ 10:11 0:00 grep --color=auto pure-ftpd
6.3 创建一个用户
[[email protected] ~]# mkdir /data/ftp //创建目录
[[email protected] ~]# useradd -u 1010 pure-ftp //创建系统用户
[[email protected] ~]# chown -R pure-ftp:pure-ftp /data/ftp/
[[email protected] ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp/ //创建虚拟帐号,-pw设定密码,-u系统用户,-d指定家目录
Password:
pure-pw用法
[[email protected] ~]# pure-pw
Usage :
pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
-D/-d <home directory> [-c <gecos>]
[-t <download bandwidth>] [-T <upload bandwidth>]
[-n <max number of files>] [-N <max Mbytes>]
[-q <upload ratio>] [-Q <download ratio>]
[-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>]
[-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
[-y <max number of concurrent sessions>]
[-z <hhmm>-<hhmm>] [-m]
pure-pw usermod <login> -f <passwd file> -u <uid> [-g <gid>]
-D/-d <home directory> -[c <gecos>]
[-t <download bandwidth>] [-T <upload bandwidth>]
[-n <max number of files>] [-N <max Mbytes>]
[-q <upload ratio>] [-Q <download ratio>]
[-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>]
[-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
[-y <max number of concurrent sessions>]
[-z <hhmm>-<hhmm>] [-m]
pure-pw userdel <login> [-f <passwd file>] [-m]
pure-pw passwd <login> [-f <passwd file>] [-m]
pure-pw show <login> [-f <passwd file>]
pure-pw mkdb [<puredb database file> [-f <passwd file>]]
[-F <puredb file>]
pure-pw list [-f <passwd file>]
-d <home directory> : chroot user (recommended)
-D <home directory> : don‘t chroot user
-<option> ‘‘ : set this option to unlimited
-m : also update the /etc/pure-ftpd/pureftpd.pdb database
For a 1:10 ratio, use -q 1 -Q 10
To allow access only between 9 am and 6 pm, use -z 0900-1800
6.4 新建一个文本稳定并测试
[[email protected] ~]# pure-pw //关键一步
[[email protected] ~]# touch /data/ftp/123.txt
[[email protected] ~]# lftp [email protected]
口令:
lftp [email protected]:~> ls
drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 .
drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 ..
-rw-r--r-- 1 0 0 0 Mar 30 10:20 123.txt
6.5 将pure-ftp下文件属性改为与系统文件属性相同1010
[[email protected] ~]# chown pure-ftp:pure-ftp /data/ftp/123.txt
[[email protected] ~]# lftp [email protected]
口令:
lftp [email protected]:~> ls
drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 .
drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 ..
-rw-r--r-- 1 1010 pure-ftp 0 Mar 30 10:20 123.txt
以上是关于配置FTP服务的主要内容,如果未能解决你的问题,请参考以下文章