需求:我有一台云主机,公网IP,Windows Server 2012 R2中文版操作系统。现在想通过浏览器,或Windows的文件浏览器( explorer.exe),或手机等客户端进行文件读写访问操作。其实,Windows Server 2008、2016之类的配置差不多。
解决方案:FTP服务器(原生态)。为了操作更方便,可以用第三方服务器端、客户端进行控制。Windows下有FileZilla等工具,IOS下有FTPManager(有免费版,也有付费版)
关键步骤:安装IIS,配置FTP,访问。
什么是IIS?个人感觉,有点像个主机、站点的样子吧,直观感受。可以部署网站、FTP服务器、SMTP服务器等。
所属领域:计算机网络(最高层,应用层)
疑惑(待查证):如果用第三方FTP的软件,例如FileZilla,好像在Windows Server中连IIS和FTP都不用安装和设置,直接在FileZilla中设置好了,就可以访问了。
最终效果
目前,只共享了一个文件夹。以后要加上不同物理路径的文件夹共同共享,在FTP路径上却以父子关系显示(相当于是给路径取 别名,虚拟路径)。
可以用浏览器访问。
可以在我的电脑里访问。
还可以在其他客户端里访问。
本文主要总结安装并开启IIS、FTP的过程。
服务器管理器 - 添加角色和功能,后来选中Web服务器(IIS),坐等安装完毕即可。
我是已经安装好了再来写的这篇文章,所以当然是已安装了…
检查:IIS服务器是否安装并成功启动
浏览器中输IP、端口号,访问即可。
注意:修改默认端口号、防火墙设置。
1. IIS的默认站点,其默认端口号是80,在CMD中输入 netstat -ano | more 命令可查看端口占用情况。
若需要更改端口号,可以到计算机管理等地方修改。对准网站Default Web Site右键,编辑绑定,修改端口即可。
2. 本地可以访问,其他机器不能访问主页,还有可能是防火墙把端口拦住了。新建一个入站规则(自行百度)。
3. 如果其他计算机无法Ping通这台服务器,请参考:xxx(以后补充)
FTP
以下先说操作系统原生态的FTP。
网站 - 右键 - 添加FTP站点,选择物理路径
绑定和SSL设置,暂时选无(我也不知道SSL有什么用)。
身份验证和授权信息,指定用户填此计算机(云主机)上的用户,设置读写权限。
检查:FTP服务是否已经启动
浏览器访问:注意,一定是ftp://开头,否则默认是http!
(FTP端口默认是21,该端口是否在监听,或者FTP是否已经在启动,请用 netstat -ano | more 命令查看)
输入用户名、密码即可(刚刚授权的用户)
同样,也可以用资源管理器访问。
更加方便,支持文件拖拉上传、下载。当然,要有权限。
用FileZilla。
在云主机上下载并安装它的服务器端软件(只支持windows),在自己的电脑上装上它的客户端软件。
启动服务端。
选择用户
填写可以登录的用户名和密码(可以不是这台云主机的Windows用户,好像是任意都行)
添加共享文件夹。Shared Folders。
客户端
1. 用浏览器、Windows资源管理器都可以访问。
2. 也可以用它配套的客户端软件。界面更友好。
3. FileZilla甚至可以支持文件的断点续传。非常推荐。
4. Beyond Compare这个软件虽然看起来更好(例如同步文件夹等),但却是收费的。
填好主机IP地址,用户名(刚刚在服务器端软件中设置的)和密码,快速连接,即可。
快速连接很简陋,建议采用新建站点的方式。
注意:
用FTP上传文件以后,默认情况下你会发现文件的修改日期变了!修改日期会变成FTP文件传输时候的时间。
请设置,保留传输文件的时间戳!
我还是建议用 FileZilla 来实现FTP服务器的C/S两端。
补充材料
1. FileZilla的服务器端提示,You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router.
关于FTP的主动模式和被动模式
详细内容请百度。
这里简要概述。FTP是一种基于TCP的协议。其默认端口21号为命令路径,相当于该端口用来传输信令/命令/指令。此外,还需要开启另一个端口来发送数据,相当于真正的数据链路。
主动(Port)或被动(Passive)是站在FTP服务器端的角度来看。主动,是FTP客户端(通过21端口)连接FTP服务器端时,告诉它自己开放了什么端口(例如x),服务器可以通过x端口与客户端进行数据传输。然而,当客户端在内网(不是公网IP)获取 使内网IP,并采用NAT技术做端口转发,主动模式可能会失效。因为服务器无法通过外网访问内网的 IP : Port(如192.168.0.102: 22),只能是服务器端和客户端都在内网。被动模式是服务器端开放另一个端口y作为数据内容传输端口,并通过信令链路(21端口)告诉客户端其y端口为数据端口。之后,客户端再通过服务器的y端口与服务器进行正式的数据交互。一般来讲,服务器的IP为公网IP。(如果客户端都连不上服务器端,干嘛做公网FTP?只能做内网FTP了吧)。
在FileZilla服务端设置好被动模式时开放的端口和服务器的公网IP。网上有人说要开20个连续的数据端口,才可以访问。但我亲测发现开放1个即可。图中设置的是60000号。
在服务器的防火墙中建立2条入站规则。
a) 21端口,FTP默认的信令端口,TCP
b) 刚刚设置的60000号作为数据端口,TCP
2. FileZilla警告:warning: FTP over TLS is not enabled, users connot securely log in.
客户端登录时,有时会被拒绝:不安全的服务器,不支持 FTP over TLS。
这是两边设置不匹配所造成的。
要么,服务器那边不管,客户端这边改设置。当然,这不安全(我还没有去抓包看密码是否是通过明文传递)。
Review: FTP:FileZilla无法连接到服务器,不安全的服务器
要么,去服务器端改设置。
服务器端:
客户端:
若加密选项仍然是普通FTP(不加密,还是可以登录)。
若加密选项选择“如果可用,使用显示的FTP over TLS”,再次连接时,会收到一份证书验证身份(其实我一直不明白这种验证是给谁看的。难道是说给用户看?如果用户发现证书上的信息和事前约定的不一样,就不要去登录了?)
对话框上写清楚了。请(用户)小心验证证书以确信改服务器可信任(上面的内容和事前约定的一样)。
此时,用客户端访问时,还是会被拒绝。
在服务器端选择 Disable IP Check,即可访问(然而暂时并不知道是为什么)。
关于IIS,摘自百度百科。
IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行,但在Windows XP Home版本上并没有IIS。IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重。远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码,可以导致IIS服务器所在机器蓝屏或读取其内存中的机密数据。