最近公司有一个内部比赛(黑客马拉松), 报名参加了这么一个赛事, 在准备参赛作品的同时(参赛服务器需要自己搭建), 借着这个机会, 决定把 tomcat 部署相关的知识从 0 到 1 重新捋一遍. 就当备忘录了.
FTP 服务器 (File Transfer Protocol Server) 是在互联网上提供文件存储和访问服务的计算机, 它们依照 FTP 协议提供服务. FTP 是 File Transfer Protocol(文件传输协议). 顾名思义, 就是专门用来传输文件的协议. 简单地说, 支持 FTP 协议的服务器就是 FTP 服务器.
本文适用范围 win10 系统连接虚拟机 contos https://mirrors.btte.NET/ , 博主使用的是 https://filezilla-project.org/ 连接 contos. 若是其他方式仅供参考.
v 安装 vsftpd
检查并安装
确认虚拟机网络连接方式
尽量虚拟机和实体机在同一 IP 段, 如实体机: 192.168.122.1 虚拟机则: 192.168.122.9
确保实体机和虚拟机的 ip 可以互相 ping 通
先查看你是否安装了 vsftpd
rpm -q vsftpd
如上图, 则未安装, 若已安装, 则显示例如 vsftpd-3.0.2-10.el7.x86_64
未安装那就安装 vsftpd
yum install -y vsftpd
如上图, 需要 root 权限
su root
然后输入密码, 如下图, 设置 root 权限成功
然后继续安装 yum install -y vsftpd
安装完毕, 如下图.
查看到安装的目录 whereis vsftpd
vsftpd 目录为: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
查看 vsftpd 服务的状态 systemctl status vsftpd.service
开启 vsftpd 服务 systemctl start vsftpd.service
开启之后再查看 vsftpd 服务的状态
设置 vsftpd 服务开机自启 systemctl enable vsftpd.service
v 防火墙设置
防火墙添加 FTP 服务
- systemctl enable firewalld
- systemctl restart firewalld
- firewall-cmd --permanent --zone=public --add-service=ftp
- firewall-cmd --reload
- firewall-cmd --reload
设置 SELinux
- getsebool -a | grep ftp
- setsebool -P ftpd_full_access on
查看设置 vi /etc/selinux/config
设置 SELINUX=disabled
v 配置 vsftpd.conf
配置之前先备份 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
配置 vsftpd.conf 文件 VIM /etc/vsftpd/vsftpd.conf 推荐使用 VIM 方式, vi 方式配置文件注释和实体没有颜色区分, 会看花眼的.
- # Example config file /etc/vsftpd/vsftpd.conf
- #
- # The default compiled in settings are fairly paranoid. This sample file
- # loosens things up a bit, to make the ftp daemon more usable.
- # Please see vsftpd.conf.5 for all compiled in defaults.
- #
- # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
- # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
- # capabilities.
- #
- # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
- anonymous_enable=YES
- #
- # Uncomment this to allow local users to log in.
- # When SELinux is enforcing check for SE bool ftp_home_dir
- local_enable=YES
- #
- # Uncomment this to enable any form of FTP write command.
- write_enable=YES
- #
- # Default umask for local users is 077. You may wish to change this to 022,
- # if your users expect that (022 is used by most other ftpd's)
- local_umask=022
- #
- # Uncomment this to allow the anonymous FTP user to upload files. This only
- # has an effect if the above global write enable is activated. Also, you will
- # obviously need to create a directory writable by the FTP user.
- # When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
- #anon_upload_enable=YES
- #
- # Uncomment this if you want the anonymous FTP user to be able to create
- # new directories.
- #anon_mkdir_write_enable=YES
- #
- # Activate directory messages - messages given to remote users when they
- # go into a certain directory.
- dirmessage_enable=YES
- #
- # Activate logging of uploads/downloads.
- xferlog_enable=YES
- #
- # Make sure PORT transfer connections originate from port 20 (ftp-data).
- connect_from_port_20=YES
- #
- # If you want, you can arrange for uploaded anonymous files to be owned by
- # a different user. Note! Using "root" for uploaded files is not
- # recommended!
- #chown_uploads=YES
- #chown_username=whoever
- #
- # You may override where the log file goes if you like. The default is shown
- # below.
- #xferlog_file=/var/log/xferlog
- #
- # If you want, you can have your log file in standard ftpd xferlog format.
- # Note that the default log file location is /var/log/xferlog in this case.
- xferlog_std_format=YES
- #
- # You may change the default value for timing out an idle session.
- #idle_session_timeout=600
- #
- # You may change the default value for timing out a data connection.
- #data_connection_timeout=120
- #
- # It is recommended that you define on your system a unique user which the
- # ftp server can use as a totally isolated and unprivileged user.
- #nopriv_user=ftpsecure
- #
- # Enable this and the server will recognise asynchronous ABOR requests. Not
- # recommended for security (the code is non-trivial). Not enabling it,
- # however, may confuse older FTP clients.
- #async_abor_enable=YES
- #
- # By default the server will pretend to allow ASCII mode but in fact ignore
- # the request. Turn on the below options to have the server actually do ASCII
- # mangling on files when in ASCII mode.
- # Beware that on some FTP servers, ASCII support allows a denial of service
- # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
- # predicted this attack and has always been safe, reporting the size of the
- # raw file.
- # ASCII mangling is a horrible feature of the protocol.
- #ascii_upload_enable=YES
- #ascii_download_enable=YES
- #
- # You may fully customise the login banner string:
- #ftpd_banner=Welcome to blah FTP service.
- #
- # You may specify a file of disallowed anonymous e-mail addresses. Apparently
- # useful for combatting certain DoS attacks.
- #deny_email_enable=YES
- # (default follows)
- #banned_email_file=/etc/vsftpd/banned_emails
- #
- # You may specify an explicit list of local users to chroot() to their home
- # directory. If chroot_local_user is YES, then this list becomes a list of
- # users to NOT chroot().
- # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
- # the user does not have write access to the top level directory within the
- # chroot)
- #chroot_local_user=YES
- #chroot_list_enable=YES
- # (default follows)
- #chroot_list_file=/etc/vsftpd/chroot_list
- #
- # You may activate the "-R" option to the builtin ls. This is disabled by
- # default to avoid remote users being able to cause excessive I/O on large
- # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
- # the presence of the "-R" option, so there is a strong case for enabling it.
- #ls_recurse_enable=YES
- #
- # When "listen" directive is enabled, vsftpd runs in standalone mode and
- # listens on IPv4 sockets. This directive cannot be used in conjunction
- # with the listen_ipv6 directive.
- listen=NO
- #
- # This directive enables listening on IPv6 sockets. By default, listening
- # on the IPv6 "any" address (::) will accept connections from both IPv6
- # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
- # sockets. If you want that (perhaps because you want to listen on specific
- # addresses) then you must run two copies of vsftpd with two configuration
- # files.
- # Make sure, that one of the listen options is commented !!
- listen_ipv6=YES
- pam_service_name=vsftpd
- userlist_enable=YES
- tcp_wrappers=YES
- View Code
中文版的(来源于网络, 侵权必删):
- # 是否允许匿名登录 FTP 服务器, 默认设置为 YES 允许
- # 用户可使用用户名 ftp 或 anonymous 进行 ftp 登录, 口令为用户的 E-mail 地址.
- # 如不允许匿名访问则设置为 NO
- anonymous_enable=YES
- # 是否允许本地用户 (即 Linux 系统中的用户帐号) 登录 FTP 服务器, 默认设置为 YES 允许
- # 本地用户登录后会进入用户主目录, 而匿名用户登录后进入匿名用户的下载目录 / var/ftp/pub
- # 若只允许匿名用户访问, 前面加上 #注释掉即可阻止本地用户访问 FTP 服务器
- local_enable=YES
- # 是否允许本地用户对 FTP 服务器文件具有写权限, 默认设置为 YES 允许
- write_enable=YES
- # 掩码, 本地用户默认掩码为 077
- # 你可以设置本地用户的文件掩码为缺省 022, 也可根据个人喜好将其设置为其他值
- #local_umask=022
- # 是否允许匿名用户上传文件, 须将全局的 write_enable=YES. 默认为 YES
- #anon_upload_enable=YES
- # 是否允许匿名用户创建新文件夹
- #anon_mkdir_write_enable=YES
- # 是否激活目录欢迎信息功能
- # 当用户用 CMD 模式首次访问服务器上某个目录时, FTP 服务器将显示欢迎信息
- # 默认情况下, 欢迎信息是通过该目录下的. message 文件获得的
- # 此文件保存自定义的欢迎信息, 由用户自己建立
- #dirmessage_enable=YES
- # 是否让系统自动维护上传和下载的日志文件
- # 默认情况该日志文件为 / var/log/vsftpd.log, 也可以通过下面的 xferlog_file 选项对其进行设定
- # 默认值为 NO
- xferlog_enable=YES
- # Make sure PORT transfer connections originate from port 20 (ftp-data).
- # 是否设定 FTP 服务器将启用 FTP 数据端口的连接请求
- # ftp-data 数据传输, 21 为连接控制端口
- connect_from_port_20=YES
- # 设定是否允许改变上传文件的属主, 与下面一个设定项配合使用
- # 注意, 不推荐使用 root 用户上传文件
- #chown_uploads=YES
- # 设置想要改变的上传文件的属主, 如果需要, 则输入一个系统用户名
- # 可以把上传的文件都改成 root 属主. whoever: 任何人
- #chown_username=whoever
- # 设定系统维护记录 FTP 服务器上传和下载情况的日志文件
- # /var/log/vsftpd.log 是默认的, 也可以另设其它
- #xferlog_file=/var/log/vsftpd.log
- # 是否以标准 xferlog 的格式书写传输日志文件
- # 默认为 / var/log/xferlog, 也可以通过 xferlog_file 选项对其进行设定
- # 默认值为 NO
- #xferlog_std_format=YES
- # 以下是附加配置, 添加相应的选项将启用相应的设置
- # 是否生成两个相似的日志文件
- # 默认在 / var/log/xferlog 和 / var/log/vsftpd.log 目录下
- # 前者是 wu_ftpd 类型的传输日志, 可以利用标准日志工具对其进行分析; 后者是 vsftpd 类型的日志
- #dual_log_enable
- # 是否将原本输出到 / var/log/vsftpd.log 中的日志, 输出到系统日志
- #syslog_enable
- # 设置数据传输中断间隔时间, 此语句表示空闲的用户会话中断时间为 600 秒
- # 即当数据传输结束后, 用户连接 FTP 服务器的时间不应超过 600 秒. 可以根据实际情况对该值进行修改
- #idle_session_timeout=600
- # 设置数据连接超时时间, 该语句表示数据连接超时时间为 120 秒, 可根据实际情况对其个修改
- #data_connection_timeout=120
- # 运行 vsftpd 需要的非特权系统用户, 缺省是 nobody
- #nopriv_user=ftpsecure
- # 是否识别异步 ABOR 请求.
- # 如果 FTP client 会下达 "async ABOR" 这个指令时, 这个设定才需要启用
- # 而一般此设定并不安全, 所以通常将其取消
- #async_abor_enable=YES
- # 是否以 ASCII 方式传输数据. 默认情况下, 服务器会忽略 ASCII 方式的请求.
- # 启用此选项将允许服务器以 ASCII 方式传输数据
- # 不过, 这样可能会导致由 "SIZE /big/file" 方式引起的 DoS 攻击
- #ascii_upload_enable=YES
- #ascii_download_enable=YES
- # 登录 FTP 服务器时显示的欢迎信息
- # 如有需要, 可在更改目录欢迎信息的目录下创建名为. message 的文件, 并写入欢迎信息保存后
- #ftpd_banner=Welcome to blah FTP service.
- # 黑名单设置. 如果很讨厌某些 email address, 就可以使用此设定来取消他的登录权限
- # 可以将某些特殊的 email address 抵挡住.
- #deny_email_enable=YES
- # 当上面的 deny_email_enable=YES 时, 可以利用这个设定项来规定哪些邮件地址不可登录 vsftpd 服务器
- # 此文件需用户自己创建, 一行一个 email address 即可
- #banned_email_file=/etc/vsftpd/banned_emails
- # 用户登录 FTP 服务器后是否具有访问自己目录以外的其他文件的权限
- # 设置为 YES 时, 用户被锁定在自己的 home 目录中, vsftpd 将在下面 chroot_list_file 选项值的位置寻找 chroot_list 文件
- # 必须与下面的设置项配合
- #chroot_list_enable=YES
- # 被列入此文件的用户, 在登录后将不能切换到自己目录以外的其他目录
- # 从而有利于 FTP 服务器的安全管理和隐私保护. 此文件需自己建立
- #chroot_list_file=/etc/vsftpd/chroot_list
- # 是否允许递归查询. 默认为关闭, 以防止远程用户造成过量的 I/O
- #ls_recurse_enable=YES
- # 是否允许监听.
- # 如果设置为 YES, 则 vsftpd 将以独立模式运行, 由 vsftpd 自己监听和处理 IPv4 端口的连接请求
- listen=YES
- # 设定是否支持 IPV6. 如要同时监听 IPv4 和 IPv6 端口,
- # 则必须运行两套 vsftpd, 采用两套配置文件
- # 同时确保其中有一个监听选项是被注释掉的
- #listen_ipv6=YES
- # 设置 PAM 外挂模块提供的认证服务所使用的配置文件名, 即 / etc/pam.d/vsftpd 文件
- # 此文件中 file=/etc/vsftpd/ftpusers 字段, 说明了 PAM 模块能抵挡的帐号内容来自文件 / etc/vsftpd/ftpusers 中
- #pam_service_name=vsftpd
- # 是否允许 ftpusers 文件中的用户登录 FTP 服务器, 默认为 NO
- # 若此项设为 YES, 则 user_list 文件中的用户允许登录 FTP 服务器
- # 而如果同时设置了 userlist_deny=YES, 则 user_list 文件中的用户将不允许登录 FTP 服务器, 甚至连输入密码提示信息都没有
- #userlist_enable=YES/NO
- # 设置是否阻扯 user_list 文件中的用户登录 FTP 服务器, 默认为 YES
- #userlist_deny=YES/NO
- # 是否使用 tcp_wrappers 作为主机访问控制方式.
- # tcp_wrappers 可以实现 Linux 系统中网络服务的基于主机地址的访问控制
- # 在 / etc 目录中的 hosts.allow 和 hosts.deny 两个文件用于设置 tcp_wrappers 的访问控制
- # 前者设置允许访问记录, 后者设置拒绝访问记录.
- # 如想限制某些主机对 FTP 服务器 192.168.57.2 的匿名访问, 编缉 / etc/hosts.allow 文件, 如在下面增加两行命令:
- # vsftpd:192.168.57.1:DENY 和 vsftpd:192.168.57.9:DENY
- # 表明限制 IP 为 192.168.57.1/192.168.57.9 主机访问 IP 为 192.168.57.2 的 FTP 服务器
- # 此时 FTP 服务器虽可以 PING 通, 但无法连接
- tcp_wrappers=YES
- View Code
编辑 user_list 文件, VIM /etc/vsftpd/user_list 允许 test 用户访问 FTP 注意下图中默认 UsRistListDebug 的设置.
默认情况下可以不编辑 user_list 文件.
按步骤操作以后, 效果如下:
filezilla 效果图如下:
v 注意事项
确保关闭防火墙
systemctl stop firewalld
(临时关闭)或者
- systemctl disable firewalld
- (禁止开机启动)
查看是否安装 telnet
rpm -qa | grep telnet
最好安装 telnet
yum install telnet-server
FTP 数字代码的意义
110 重新启动标记应答.
120 服务在多久时间内 ready.
125 数据链路端口开启, 准备传送.
150 文件状态正常, 开启数据连接端口.
200 命令执行成功.
202 命令执行失败.
211 系统状态或是系统求助响应.
212 目录的状态.
213 文件的状态.
214 求助的讯息.
215 名称系统类型.
220 新的联机服务 ready.
221 服务的控制连接端口关闭, 可以注销.
225 数据连结开启, 但无传输动作.
226 关闭数据连接端口, 请求的文件操作成功.
227 进入 passive mode.
230 使用者登入.
250 请求的文件操作完成.
257 显示目前的路径名称.
331 用户名称正确, 需要密码.
332 登入时需要账号信息.
350 请求的操作需要进一部的命令.
421 无法提供服务, 关闭控制连结.
425 无法开启数据链路.
426 关闭联机, 终止传输.
450 请求的操作未执行.
451 命令终止: 有本地的错误.
452 未执行命令: 磁盘空间不足.
500 格式错误, 无法识别命令.
501 参数语法错误.
502 命令执行失败.
503 命令顺序错误.
504 命令所接的参数不正确.
530 未登入.
532 储存文件需要账户登入.
550 未执行请求的操作.
551 请求的命令终止, 类型未知.
552 请求的文件终止, 储存位溢出.
553 未执行请求的的命令, 名称不正确.
来源: https://www.cnblogs.com/toutou/p/9662390.html