需求:我有一台云主机,公网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 TLSis 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服务器所在机器蓝屏或读取其内存中的机密数据。

Windows Server 2012:安装IIS、FTP服务的更多相关文章

  1. html5 http的轮询和Websocket原理

    这篇文章主要介绍了html5 http的轮询和Websocket原理的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 有没有办法知道购买哪个iTunes帐户? – iOS

    我的应用程序提供应用内购买非消耗类型.该应用程序具有登录功能.是否可以根据登录用户购买我的应用程序?

  3. ios – Apple应用程序内购买收据 – 在服务器端验证

    我想验证它,并确保这是独一无二的.我担心的是:如果有人会收到一张有效收据,他就可以破解我们的服务器端API,并使用相同的有效收据进行无限数量的应用内购买.我应该以某种方式解密并检查transaction_id的“原始”收据,即我发送给Apple进行验证的收据?

  4. ios – 服务器端接收验证失败时是否应该调用finishTransaction?

    我们应该调用finishTransaction吗?这导致无效的交易永远活在队列中?就像在这个问题上说的那样:iPhonein-apppurchase:receiptverificationButifyoufindoutthatareceiptisinvalid,youshouldfinishtheassociatedtransaction.Ifnot,youmayhaveextra-transactionslivingforeverinthetransactionqueue.Thatmeansthatea

  5. ios FTP使用NSURLSession上传

    我试图通过FTP将文件上传到服务器.根据NSK的NSURLSession类支持FTP操作.有一个着名的AppleDeveloperblog也支持.但还不清楚NSURLSessionAPI是否支持ftp上传?

  6. Swift开发:GCDAsyncSocket通信之TCP服务器

    overridefuncviewDidLoad(){super.viewDidLoad()clientSockets=NSMutableArray()msgTextView.backgroundColor=UIColor.grayColor()msgTextView.text="接收的客户端消息:\n"}//发送消息按钮@IBActionfuncsendBtnClick{ifclientSockets.count==0{return}letmsg=inputTextInput.text!//1.处理请求,

  7. Project Perfect让Swift在服务器端跑起来-引言一

    你认识Swift或者是在客户端,因为它是苹果用来开发客户端的新一代语言。可以说Swift已经是一个完整的跨平台语言了。Perfect让Swift在服务器端跑起来了,它是开源的。添加完后你打开Xcode就可以看到Perfect模版了。PerfectLib你可以理解成Perfect框架,而PerfectServer是启动支持Perfect的类似IIS/Apache的容器,MysqL是需要介入MysqLConnector5.利用Perfect模版创建PerfectWeb项目,如图我创建了一个HelloWorld

  8. android – 使用Dart进行远程调试

    这个问题的动机是,我花了大约两个小时来找出我做错了什么.如何在我的Android手机或模拟器上远程调试我的Dart-Webapp?

  9. 如何将android客户端连接到我的笔记本电脑内的Apache服务器(php)的localhost?

    我的笔记本电脑中的localhost-127.0.0.1或android10.0.0.1中的localhost?>那么,如果我想从android访问localhost来调用PHP来运行?哪个ip地址/url我需要放在Android应用程序?我需要在httpconfig中为XAMPP修改任何内容吗?解决方法使用ipconfig在笔记本电脑中找到您的IP地址.在手机中使用该地址而不是127.0.0.1.

  10. android – Google Cloud Messaging无法在公司网络上使用4.1.2设备

    我已经实现了一个简单的GCM客户端和服务器.客户端使用currentGCMclientAPIs(而不是deprecatedhelperlibrary).服务器(C#和.NET)遵循相应的serverguidelines(使用HTTP).我的服务器在公司域内的计算机上运行,因此我将客户端设备连接到公司网络内的Wi-Fi接入点,但可以访问Internet.简而言之,我的问题是4.3手机上收到通知,但连

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部