Linux实例搭建FTP站点

<p class="p">vsftpd全称very secure FTP daemon,是一款在Linux发行版中使用较多的开源FTP服务器软件,具有小巧轻快、安全易用等特点。本文介绍Linux实例如何搭建FTP站点,以CentOS7.6-64Bit为例。</p> <section class="section" id="Linux_Set_Up_FTP_Site__section_dwx_tdx_svb"><h2 class="doc-tairway">步骤一:安装vsftpd</h2> <ol class="ol" id="Linux_Set_Up_FTP_Site__ol_rfh_vdx_svb"> <li class="li">登录<a class="xref" href="https://www.ocftcloud.com/console/ecs/overview" target="_blank" rel="external noopener">云服务器ECS控制台</a></li> <li class="li"> 安装vsftpd,执行以下命令: <p class="p"> <code class="ph codeph">yum install -y vsftpd </code></p><p class="p">显示如下信息,表示软件安装成功。</p><img class="image" id="Linux_Set_Up_FTP_Site__image_bm1_hkj_2sb" width="800" src="https://obs-cn-shanghai.fincloud.pinganyun.com/pacloud/20232006152128-19cd6acc9537.png"> </li> <li class="li"> 执行以下命令设置FTP服务开机自启动。 <p class="p"> <code class="ph codeph">systemctl enable vsftpd.service </code></p> </li> <li class="li"> 执行以下命令启动FTP服务。 <p class="p"><code class="ph codeph"> systemctl start vsftpd.service </code></p> </li> <li class="li"> 执行以下命令查看FTP服务端口。 <div class="p"> <code class="ph codeph">netstat -antup | grep ftp </code><img class="image" id="Linux_Set_Up_FTP_Site__image_zjn_hkj_2sb" width="800" src="https://obs-cn-shanghai.fincloud.pinganyun.com/pacloud/20232006152128-13e02d939c76.png"></div> </li> </ol> </section> <section class="section" id="Linux_Set_Up_FTP_Site__section_gfv_22x_svb"><h2 class="doc-tairway">步骤二:配置vsftpd</h2> <p class="p">安装完vsftpd后,默认开启了匿名FTP的功能。使用匿名FTP,您无需输入用户名和密码即可登录FTP 服务器,但是没有修改或上传文件的权限,匿名访问FTP服务器不安全,这种方式一般只用来保持不重要的对外文件,不推荐在生产环境中使用。</p> <p class="p">若您使用Linux操作系统中的账号登录服务器,会被vsftpd拒绝,您可以在vsftpd里配置用户账号和密码登录,以下操作介绍了在vsftpd 里配置用户账号和密码登录FTP服务器。 </p> <ol class="ol" id="Linux_Set_Up_FTP_Site__ol_ptk_g2x_svb"> <li class="li"> 执行以下命令为FTP服务创建一个Linux用户。本例中用户名为ftptest。 <div class="p"> <pre class="pre codeblock" id="Linux_Set_Up_FTP_Site__codeblock_msj_2j3_gtb"><code>useradd ftptest</code></pre> </div> </li> <li class="li"> 执行以下命令并输入设置的ftptest用户的密码。 <div class="p"> <pre class="pre codeblock" id="Linux_Set_Up_FTP_Site__codeblock_f1y_2j3_gtb"><code>passwd ftptest</code></pre> </div> </li> <li class="li"> 执行以下命令创建一个供FTP使用的文件目录,本例中为/var/ftp/test01。 <div class="p"> <pre class="pre codeblock" id="Linux_Set_Up_FTP_Site__codeblock_zqk_fj3_gtb"><code>mkdir /var/ftp/test01</code></pre> </div> </li> <li class="li"> 执行以下命令将创建的文件目录所有者改为用于登录FTP的本地用户。 <div class="p"> <pre class="pre codeblock" id="Linux_Set_Up_FTP_Site__codeblock_c3t_fj3_gtb"><code>chown -R ftptest:ftptest /var/ftp/test01</code></pre> </div> </li> <li class="li"> 修改vsftpd.conf的配置文件。 <ol class="ol" type="a" id="Linux_Set_Up_FTP_Site__ol_awp_55h_2sb"> <li class="li">执行以下命令打开配置文件vsftpd.conf。<div class="p"> <pre class="pre codeblock" id="Linux_Set_Up_FTP_Site__codeblock_zdd_gj3_gtb"><code>vi /etc/vsftpd/vsftpd.conf</code></pre> </div></li> <li class="li">按i键进入编辑模式。</li> <li class="li">修改打开的vsftpd.conf文件。<p class="p">您可根据实际业务需求将FTP配置为主动模式或者被动模式。</p><ul class="ul" id="Linux_Set_Up_FTP_Site__ul_vpp_ywh_2sb"> <li class="li"> <span class="ph uicontrol">主动模式</span>:客户端向服务端发送数据端口的信息,由服务端主动连接客户端发送的数据端口,参数如下:<table class="table" id="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb"><caption></caption><colgroup><col><col></colgroup><thead class="thead"> <tr class="row"> <th class="entry colsep-1 rowsep-1" id="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1" colspan="2"> <p class="p"> #设置以下参数,不允许匿名登录FTP服务器,允许本地用户登录FTP服务器,并指定FTP本地用户使用的文件目录。 </p> </th> </tr> </thead><tbody class="tbody"> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> anonymous_enable=NO </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> #不允许匿名登录FTP服务器 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> local_enable=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> #允许本地用户登录FTP服务器 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> local_root=<span class="ph uicontrol">/var/ftp/test01</span></p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> #FTP本地用户登录后使用的文件目录 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 " colspan="2"> <p class="p"> #设置以下参数,限制用户只能访问自身的主目录。 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> chroot_local_user=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> #所有用户被限制在主目录 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> chroot_list_enable=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> #启用例外用户名单 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> chroot_list_file=/etc/vsftpd/chroot_list </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> #指定例外用户名单,这些用户没有被锁定在主目录 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> allow_writeable_chroot=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 " colspan="2"> <p class="p"> #配置其他参数 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> local_umask=022 </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> dirmessage_enable=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> xferlog_enable=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> connect_from_port_20=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> xferlog_std_format=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> listen=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> pam_service_name=vsftpd </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> userlist_enable=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> tcp_wrappers=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_blj_mwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> </tbody></table></li> <li class="li"><span class="ph uicontrol">被动模式</span>:服务端开启并发送数据端口的信息给客户端,由客户端连接服务端开启的数据端口,服务端被动接受连接。在被动模式下,您除了需要配置主动模式所需的所有参数外,还需要配置如下参数:<table class="table" id="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb"><caption></caption><colgroup><col><col></colgroup><thead class="thead"> <tr class="row"> <th class="entry colsep-1 rowsep-1" id="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1" colspan="2"> <p class="p"> #设置以下参数,配置FTP支持被动模式,并指定FTP服务器的公网IP地址和可供访问的端口范围,您可根据实际环境配置端口范围。 </p> </th> </tr> </thead><tbody class="tbody"> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> listen=YES </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> listen_ipv6=NO </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> pasv_address=xx.xx.xx.xx </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> #FTP服务器的公网IP地址 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> pasv_min_port=port number </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> #设置被动模式下的最小端口 </p> </td> </tr> <tr class="row"> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> pasv_max_port=port number </p> </td> <td class="entry colsep-1 rowsep-1" headers="Linux_Set_Up_FTP_Site__table_mlq_rwh_2sb__entry__1 "> <p class="p"> #设置被动模式下的最大端口 </p> </td> </tr> </tbody></table></li> </ul></li> <li class="li">按Esc键退出编辑模式,输入<code class="ph codeph">:wq</code>保存后退出。</li> <li class="li">在/etc/vsftpd/目录下创建chroot_list文件。<div class="note note note_note" id="Linux_Set_Up_FTP_Site__note_qtk_g2x_svb"><span class="note__title">说明:</span> <p class="p"> chroot_list文件是限制在主目录下的例外用户名单,若您需要设置某个用户不受仅可以访问其主目录的限制,可将对应的用户名写入该文件,若没有例外也必须要有chroot_list文件,内容可以为空。</p> </div></li> </ol> </li> <li class="li"> 执行以下命令重启vsftpd服务使配置生效。 <div class="p"> <pre class="pre codeblock" id="Linux_Set_Up_FTP_Site__codeblock_olm_hj3_gtb"><code>service vsftpd restart</code></pre> </div> </li> </ol> </section> <section class="section" id="Linux_Set_Up_FTP_Site__section_ojd_l2x_svb"><h2 class="doc-tairway">步骤三:设置安全组</h2> <p class="p">搭建好FTP站点后,需要在云服务器ECS实例安全组的入方向配置一条放行FTP端口的规则,可参考<strong class="ph b">配置安全组规则</strong>。</p> <ul class="ul" id="Linux_Set_Up_FTP_Site__ul_qdj_m2x_svb"> <li class="li"><strong class="ph b">FTP 为主动模式</strong>:端口21。</li> <li class="li"><strong class="ph b">FTP 为被动模式</strong>:端口21,配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。</li> </ul> </section> <section class="section" id="Linux_Set_Up_FTP_Site__section_hnl_42x_svb"><h2 class="doc-tairway">步骤四:客户端测试</h2> <ol class="ol" id="Linux_Set_Up_FTP_Site__ol_ogq_p2x_svb"> <li class="li"> 打开客户端IE浏览器。 </li> <li class="li"> 设置浏览器访问模式,选择<span class="ph menucascade"><span class="ph uicontrol">设置</span><abbr> > </abbr><span class="ph uicontrol">Internet 选项</span><abbr> > </abbr><span class="ph uicontrol">高级</span></span>,勾选<span class="ph uicontrol">启用FTP 文件夹视图</span>。若为主动访问模式,取消勾选<span class="ph uicontrol">使用被动 FTP</span>;若为被动模式勾选<span class="ph uicontrol">使用被动 FTP</span>。 </li> <li class="li"> 在路径栏输入:<span class="ph uicontrol">ftp://FTP服务器IP地址:FTP端口</span>,例如:ftp:// 101.89.95.105:21。 <div class="note note note_note" id="Linux_Set_Up_FTP_Site__note_pgq_p2x_svb"><span class="note__title">说明:</span> 若不填端口信息,则默认访问21端口。</div> </li> <li class="li"> 弹出输入用户名和密码的对话框,表示配置成功,输入正确的用户名和密码,即可对 FTP 文件进行相应权限的操作。 </li> </ol> </section>
以上内容是否解决了您的问题?
请补全提交信息!
联系我们

电话咨询

400-151-8800

邮件咨询

fincloud@ocft.com

在线客服

工单支持

解决云产品相关技术问题