2019-12-14-FTP服务器搭建

2023-05-16


title: FTP服务器搭建
date: 2019-12-14 15:34:19
updated: 2019-12-14 15:34:19
categories:

  • [服务器, 搭建]
  • [网络]
    tags:
  • FTP
  • 服务器

目录

  • 什么是FTP服务器
  • 本地FTP服务器搭建(简易版)
  • FTP服务器发布至外网(Serv-u版)

什么是FTP服务器

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

软件种类

  1. Server-U
  2. FileZilla
  3. VsFTP
  4. IIS FTP

工作模式

FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP 工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。主要有两种工作模式:

  1. 主动模式(PORT)
    主动模式下,客户端随机打开一个大于1024 的端口向服务器的命令端口 P,即 21 端口,发起连接,同时开放N +1 端口监听,并向服务器发出 “port N+1” 命令,由服务器从它自己的数据端口 (20) 主动连接到客户端指定的数据端口 (N+1)。
    FTP 的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。

  2. 被动模式(PASV)
    为了解决服务器发起到客户的连接问题,有了另一种 FTP 连接方式,即被动方式。命令连接和数据连接都由客户端发起,这样就解决了从服务器到客户端的数据端口的连接被防火墙过滤的问题。
    被动模式下,当开启一个 FTP 连接时,客户端打开两个任意的本地端口 (N > 1024 和 N+1) 。

总结

在主动模式下:FTP服务器的控制端口是21,数据端口是20,所以在做静态映射的时候只需要开放21端口即可,他会用20端口和客户端主动的发起连接。

在被动模式下:FTP服务器的控制端口是21,数据端口是随机的,且是客户端去连接对应的数据端口,所以在做静态的映射话只开放21端口是不可以的。此时需要做DMZ。

本地FTP服务器搭建(简易版)

参考资料:https://www.cnblogs.com/popfisher/p/7992036.html

第一步:配置IIS Web服务器

  • 1.1 控制面板中找到“程序”并打开

  • 1.2 “程序”界面找到“启用或关闭Windows功能”并打开

上面两步也可以简化为一步:按【Win + R】快捷键打开运行对话框,输入“optionalfeatures”后,按回车键

  • 1.3 从“启用或关闭Windows功能”弹窗中找到Internet Information Services(或者中文版Internet信息服务)并打开

  • 1.4 配置IIS并点击确定
    win功能中配置IIS

第二步:配置IIS Web站点

  • 2.1 开始菜单搜索“IIS”并点击进入IIS管理器(Internet Information Services (IIS)管理器)

简化操作:按【Win + R】快捷键打开运行对话框,输入“inetMgr.exe”后,按回车键

  • 2.2 新建FTP站点

    • 2.2.1 新建FTP服务器 根目录文件夹

    这步就是你随便找个位置新建一个文件夹,这个文件夹可以随意放置,没有特定需要,当然,尽量不要放在系统盘。

    • 2.2.2 查看本机ip地址,后续访问Ftp地址需要用到(打开cmd输入ipconfig)

    本机ip地址是IPv4 地址,当然,可能有些人的电脑连接了很多地址,那就要看你当前用的是无线局域网适配器还是以太网,以及更加细致的分类。

    • 2.2.3 IIS网站管理器界面左边导航栏找到“网站”,右键弹出菜单,在弹出菜单中点击“添加FTP站点”

    • 2.2.4 配置网站(网站名称:FtpSite 物理路径:E:\ftpserver)

    这里,名称随意,物理路径就是刚才你的新建文件夹的路径。

    • 2.2.5 IP 端口号 SSL设置

    本机IP地址(从下拉菜单选择):此处是你的IP地址
    端口号是21,要不要自动启动(开机就启动)看你自己
    SSL设置为无SSL,除非你有SSL,并且知道怎么用了。
    IP 端口 SSL设置

    • 2.2.6 身份验证和授权信息设置

    为了方便测试,此处身份验证先设置为匿名(以后可以更改),授权 允许所有用户,权限 读写都打勾。
    身份验证和授权信息设置

第三步:测试FTP站点(先在 根目录文件夹,随便放一个文件)

  • 3.1 浏览器或者文件管理器地址栏输入ftp地址(ftp://192.168.0.105) ,别傻傻地复制粘贴,输入你自己的IP,注意前缀ftp://

  • 3.2 IIS管理器中的FTP身份验证里面配置身份认证
    在FTP的管理栏中,打开FTP身份验证

此处根据你自己的需要进行设置,基本身份验证是根据你电脑中的用户访问的,匿名身份验证是指任何人都可以访问。
FTP身份验证

  • 3.3 IIS管理器中的FTP授权规则

在FTP的管理栏中,打开FTP授权规则
在右边操作栏里,添加允许规则添加拒绝规则,根据自己需要,设置相应规则。
FTP授权规则举例

  • 3.4 配置FTP站点用户名和密码
    • 3.4.1 此电脑(桌面计算机图标右键)—>管理->本地用户和组->用户->新建一个用户,并设置密码
      计算机管理
      新用户

    细心的你可能已经发现这里的账户就是我们计算机的账户,所以说访问你的FTP服务器的账号实际上是你的电脑用户账号。
    我们使用自己登录电脑的用户名和密码来登录FTP站点,不用新建这个test用户都可以。

结语

到此一个简单的FTP服务器搭建成功,同一个局域网内其他人可以访问到你的电脑了,可以相互传输文件。当然这只是局限于局域网,如果想要在任何一台联网的电脑上访问到这个FTP文件服务器,那紧接着下面的教程吧!

FTP服务器发布至外网(Serv-u版)

参考资料:
https://blog.csdn.net/suliang5158/article/details/79273099
https://jingyan.baidu.com/article/e75aca85634b68142edac6f2.html
https://blog.csdn.net/wz947324/article/details/80063061
https://blog.csdn.net/superdog007/article/details/48787049

工具及环境:

  1. 系统:Windows Server2012R2

  2. 软件:Serv-u(MFT Server 15.1.2)

百度云 链接: https://pan.baidu.com/s/1QrqlfzFIcP-y1YD6981CbQ 提取码: kja7

  1. 环境配置:
  • 如果是购买阿里云的服务器的话,必须还得在阿里云后台开放指定端口!
  1. 登录阿里云,知道服务器控制台页面,左侧菜单栏有个 安全组 的子菜单
  2. 安全组中添加两个规则:
    开放20-21端口、1024-65535端口
  • 目前(2019/12/14),我在腾讯云上没遇到这个问题,是可以直接使用的。

Serv-U的安装与配置

  1. 打开SU-FTP-Server-Windows-v15.1.2执行安装,选择中文(简体)
    安装1
    安装2
    安装3
    安装4
    安装5
    安装6
    安装7

  2. 启动Serv-U管理控制台,进行域配置
    域配置1
    域配置2
    域配置3
    域配置4
    域配置5

注意这里的IPv4地址填写你自己FTP服务器所在的内网IP
域配置6

  1. 使用向导创建匿名用户
    使用向导0
    这里点击后,前往域下面的用户,在用户里找到向导,点击进入。
    使用向导1
    使用向导2
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ni73SN1z-1579322643614)(http://139.196.40.21:88/img/2019-12-14-FTP%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA/3333.jpg)]
    使用向导4

  2. 新建域用户,添加域管理员
    域管理员1
    域管理员2
    选择域管理员用户,双击编辑该用户,进入’目录访问’标签,添加如图(域管理员3)两个路径。
    域管理员3
    域管理员4
    同理,也可以设置匿名用户的目录访问权限

  3. 解决FTP服务器在浏览时出现中文乱码的问题

  1. 下面选择“限制和设置”——“FTP设置”——“用户默认设置”中找到OPTS UTF8命令,右击禁用此命令。
  2. 点击下面的“全局属性”——高级选项”里,把“对所有已收发的路径和文件名使用UFT-8编码”前面的钩去掉。
    解决中文乱码1
    解决中文乱码2
    这样,在上传或浏览FTP服务器时就不会出现中文乱码了。

发布至外网(云服务器)

  1. 配置监听器,指向公网IP
    监听器
  2. 对ftp服务器下的监听器进行修改
    监听器修改
  3. 设置PASV端口范围(就是服务器向外发送数据用端口)
    配置端口

到这里,应该是可以让你在其他电脑上访问你搭建的FTP服务器了,访问路径是ftp://此处填写你的公网IP

FTP绑定域名

添加域名解析
进入你购买域名的服务商控制台,在域名管理中添加一个域名解析。选择A记录,填写二级域名前缀,记录值为你的公网ip。
然后在ftp服务器空间后台绑定这个域名,这样的话等域名解析生效了,那么就可以用域名访问ftp服务器以及里面的内容了。
访问地址为:ftp://此处填写你的域名

有可能出现访问不到的情况,可能是你的云服务器还没备案,先去备案吧。

总结

  1. PASV端口范围
    被动模式(PASV)下,有数据要传输时,服务器会打开一个数据端口(并处于监听状态),然后告知客户端,客户端连接这个数据端口发送数据。但是数据端口是随机的,那么服务器该如何将这些随机数据端口映射到公网的路由器上呢?总不能让内部网的一台机器完全暴露到公网上吧,虽然确实有这样的方案(称之为DMZ主机),但这绝对是最愚蠢的选择。
    虽然数据端口是随机的,但Serv-U可以指定随机的范围。打开Serv-U管理控制台 > 管理服务器 > 服务器限制和设置 > 服务器设置 。在“设置”选项卡里找到“PASV端口范围”,就是上面的配置端口那张图。只需要把这些指定的端口映射出去就可以了。

  2. PASV IP地址
    这是全文中想要发布至外网的关键所在。打开Serv-U管理控制台 > 你自定义的域名 > 域详细信息 > 监听器 > 编辑 ,在PASV IP地址或域名中设置公网IP即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2019-12-14-FTP服务器搭建 的相关文章

  • ftp_put():无法打开该文件:没有这样的文件或目录

    我在互联网上搜索了很多 但没有找到解决方案 我需要通过 PHP 将文件上传到 FTP 服务器 我测试了各种 PHP 脚本 如下所示 但我总是收到相同的问题 我尝试使用绝对路径 正常路径和其他路径 连接的警告 ftp put 无法打开该文件
  • FTP获取所有文件

    我已使用 PHP 成功连接到 FTP 并且可以使用以下命令查看所有文件 ftp nlist 但是 有没有一种简单的方法可以下载当前目录中的所有这些文件 我找不到任何关于如何执行此操作的示例 Thanks 另一个简单的解决方案是 列出数组中的
  • 通过网络(FTP、HTTP、RSync 等)传输文件的最快方法是什么[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图找出通过网络在两个系统之间传输大量数据的最佳方法 我目前正在研究 FTP HTTP 或 RSync 我想知道哪一个最快 我在网上寻找
  • 如果文件不存在于给定的本地文件列表中,则从 FTP 下载文件

    我有一个 FTP 服务器 我想从中下载本地目录中不存在的所有文件 我尝试做一个For Next但我就是无法理解它 我尝试枚举这些文件 但由于对两个列表都执行了该操作 所以出现错误 我认为该错误可能是由于交叉检查在线文件与本地列表中的单个枚举
  • Windows 7 中未加载 PHP 7 FTP 扩展

    我最近在 Windows 7 操作系统 32 位 中安装了 PHP 7 我使用 FTP 库 nicolab php ftp client 来实现 FTP 功能 但出现异常 致命错误 未捕获 FtpClient FtpException FT
  • 在 FTP 客户端中使用 grep 和 ls?

    我怎样才能使用grep and ls在 FTP 客户端 我的意思是 如果我想找到一些可以使用的特定文件 ls l grep pattern 对于通常的 Unix 命令行交互式 ftp 一种方法是 Remote system type is
  • FTP 脚本在放置后保留文件的时间戳

    我知道 FTP 不支持传输和保留文件日期 时间戳 想知道是否有人有任何想法 脚本 Shell perl 可以在放置操作后保留传输文件的时间戳 您是否可以尝试以 tar 文件传输文件 从 tar 中提取后 时间戳将被恢复
  • 使用Java通过FTP将所有目录复制到服务器

    我需要将一个目录从本地磁盘复制到服务器 该目录包含很多目录 子目录和文件 想想目录的层次结构树 以下是复制一个文件的示例 public void saveFilesToServer throws IOException FTPClient
  • 从 FTP 下载文件以及如何提示用户在 ASP.NET C# 中保存/打开文件

    我想从 FTP 下载文件 并在用户单击 ASP NET C 页面上的下载按钮时在用户的 Web 浏览器中打开下载 保存提示 string strDownloadURL System Configuration ConfigurationSe
  • 如何使用 IIS 为 Amazon EC2 服务器启用 FTP 被动模式

    我最初在使用 pagelime 时遇到了问题 它要求用户使用被动模式并且不支持主动模式 让主动模式工作起来非常简单 但让被动工作模式需要付出更多的努力 我正在使用带有 IIS 的 Amazon EC2 服务器以及 FTP 站点 以下链接最终
  • Ftp 仅在 .NET 4.0 中抛出 WebException

    我有以下 C 代码 当针对 NET Framework 3 5 或 2 0 编译时 它运行得很好 我没有针对 3 0 进行测试 但它很可能也能工作 问题是 当针对 NET Framework 4 0 构建时它会失败 FtpWebReques
  • 让 FTP 在 Azure VM 上运行,克服 ftp 客户端上的“连接关闭”问题

    我正在努力连接到 Azure 中新 VM 上的 FTP 我从默认映像 Windows Server 2012 Datacenter 创建了一个新的虚拟机 并通过 RDP 连接到新的虚拟机中 然后 我启用了 Web 服务器 IIS 角色 包括
  • 警告:ftp_get():删除操作成功

    我有一些从我们的开发服务器传输备份的代码 它似乎随机表现得非常奇怪 并给出以下错误 输出 Warning ftp get Delete operation successful in root cron get dev archives p
  • 如何在 C# 中将字符串数据作为 ZIP 存档上传到 FTP 服务器

    这是我的代码 我想导出 上传这个 dat文件以 zip 格式传输到 FTP 服务器 我尝试了很多但没有找到任何解决方案 任何人都可以帮助我解决这个问题 public string ExportVoid FileSetups fileSetu
  • 紧凑框架 - OpenNetCf.Net FTP 示例?

    我正在尝试让 OpenNetCF Net FTP 组件与我的 PDA 应用程序一起工作 除了连接到服务器之外 我正在努力让它做更多的事情 并且想知道是否有人知道我可以用来学习如何使用它的任何示例代码 我需要能够下载和上传文件 以及确定我想要
  • 获得使用 FTP-WinSCP 处理我的 Amazon EC2 Ubuntu 服务器上的文件的权限

    我在 Amazon 上有一个 Ubuntu 服务器 我安装了使用它的所有内容 php mysql phpmyadmin apache 问题是我无法使用 FTP 移动或编辑文件 我收到错误消息 Permission denied Error
  • 检查 FTP 服务器上的可用空间

    我正在运行一个构建脚本 其中三个可执行文件 每个 100mb 被上传到 FTP 服务器 由于 FTP 服务器空间问题 第一次上传可能会失败 因此我们的构建过程会失败 这意味着我必须从服务器释放一些空间并再次运行构建脚本 这是浪费时间 我想在
  • 如何使用 FTP 在目录之间移动文件?

    我有一个程序需要将文件从 FTP 服务器上的一个目录移动到另一个目录 例如 该文件位于 ftp 1 1 1 1 MAIN Dir1 我需要将文件移动到 ftp 1 1 1 1 MAIN Dir2 我发现了几篇推荐使用 重命名 命令的文章 因
  • 使用自动 bash 脚本检查 FTP 中是否存在文件

    我想自动化执行以下操作的批处理作业 检查我的file txt存在于FTP服务器中 我将其重命名为file trt 检查我的file txt and file trt存在 如果存在我发送电子邮件 我运行另一个脚本 最后我删除file trt
  • PHP 通过 FTP 下载整个文件夹(递归)

    我目前有一个非常大的网站 大小约为 5GB 包含 60 000 个文件 当前主机并没有做太多事情来帮助我将网站转移到新主机 我的想法是在新主机上制作一个简单的脚本 通过 FTP 传输到旧主机并下载整个 public html 文件夹 递归地

随机推荐