欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Windows系统下的SFTP服务器搭建与公网访问 有大用

更新:2022/11/22

零、起由

之前试了FTP作为文件服务器,然后使用coplar内网穿透进行公网访问,pro套餐只支持保留两个固定隧道端口,然而使用FTP协议进行数据传递就要同时占用4个端口(一个通信信道,3个数据信道)。所以放弃FTP,选择只需要占用一个隧道端口的SFTP协议。

首先,了解一下SFTP和FTP的区别。


一、FTP与SFTP的区别


SFTP也被称为安全文件传输协议(SSH File Transfer Protocol),属于文件传输协议(FTP)的安全版本,也是SSH协议的一部分,可通过安全SHELL(SSH)数据流轻松进行数据传输和数据访问。它提供了一个安全的连接来传输文件,并在本地和远程系统上遍历文件系统。SFTP中的加密是通过SSH连接来完成的,文件可以通过WinSCP和SFTP客户端进行传输。FTP和SFTP相似,都支持批量传输(一次传输多个文件),文件夹/目录导航,文件移动,文件夹/目录创建,文件删除等。它们有以下不同:

1. 安全通道

ftp不提供任何安全通道来在主机之间传输文件;而sftp协议提供了一个安全通道,用于在网络上的主机之间传输文件。

2. 使用的协议

ftp使用TCP / IP协议。而,sftp是SSH协议的一部分,它是一种远程登录信息。

3. 链接方式

ftp使用TCP端口21上的控制连接建立连接。而,sftp是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。

4. 安全性

ftp密码和数据以纯文本格式发送,大多数情况下是不加密的,安全性不高。而,sftp会在发送之前加密数据,二进制的形式传递,是无法“按原样”阅读的,安全性较高。

5. 传输速度

与 ftp 相比,sftp 速度较慢,因为数据包的最大大小由协议本身决定。sftp 中的每个数据包在从客户端写入输出套接字之前都已加密,并在被服务器接收时解密。这当然会导致传输速率降低,但传输非常安全。通常,速度取决于协议,并且应用的安全性越高,速度越慢。

sftp 传输不像 ftp 或 HTTP 传输那样流式传输。它们与客户端打开远程文件并分块请求(一次不超过 32K)成块。在每个读取请求之后,服务器将用块答复,而客户端则发出另一个。当您请求超出文件末尾的块时,您将获得部分块或服务器发出的响应,表明您已到达末尾。这样便完成了下载。

一些 sftp 客户端一次发出 “x” 个请求,使传输速度更快,而某些 sftp 客户端一次发出一个请求。这就是他们获得更快的传输速度的方式。Serv-U 不断检索数据并将其发送到客户端,从而减少了不发送数据所花费的时间。这种方法的诀窍是数据块可能会乱序到达。因此,客户端必须根据原始请求所对应的文件窗口对文件执行写入操作。

如果您正在寻找更快的传输速度,则最好使用同样安全的 ftpS。

有几个因素会影响sftp传输的速度:

  • 加密。 尽管对称加密速度很快,但并不会很快被忽视。 如果您比较快速网络(100 兆位或更高)上的速度,则加密将成为您过程的一个中断。

  • 哈希计算和检查。

  • 缓冲区复制。 与纯 ftp 相比,在 SSH 之上运行的 sftp 导致每个数据块至少被复制 6 次(每侧 3 次),而纯 ftp 在最佳情况下可以将数据传递到网络接口而不进行复制。 块复制也需要一些时间。

二、SFTP服务端软件的选择

FreeSSHd、FreeFTPd、 Xlight FTP、Core Mini SFTP、Rebex Tiny Sftp

  • freeFTPd 或者 freeSSHd 都可以设置 sftp 用户,但不能像 xlight 那样细分权限,都是读写权限!

  • freeSSHd 的 sftp,所有用户只有一个 sftp 的主目录。

  • freeFTPd 的 sftp,可以给不同的用户设定不同的目录。

  • freeSSHd 可以设置系统账号、公钥、密码的登录方式,不像 xlight 只能在密码、公钥里二选一。

  • freeFTPd 可以设置系统账号、密码、匿名的登录方式。

  • freeSSHd 容易出现用户登录验证失败问题,每次更改设置需要 unload 退出。不支持中文目录。支持 scp 命令。

  • Core Mini SFTP Server 单文件单用户免安装版,可开启scp,支持设置UTF-8,中文才不会显示乱码,但无法进入中文目录。随便填写个信息才能下载,可能有 4GB 大小限制。可作为服务运行,另外有 TFTP 服务端。

  • Syncplify.me MicroServer 单文件单用户免安装版,Micro才是免费版,默认中文无乱码。登录有banner提示,可能会影响自动登录。

  • Rebex Tiny Sftp Server 服务器是一款小型,极简主义的单用户SFTP服务器,用于测试目的。免费用于商业和非商业用途。XP系统里打不开程序,用配置文件,不方便使用。

  • Xlight FTP Server 简单易用。只是比较影响使用的缺点是:同一个账号不能同时启用密码和公钥验证。

三、SFTP服务器搭建

服务器软件: Xlight FTP Server 3.9.0.0 x64 Professional Edition

相似软件有很多,因为看中Xlight FTP对用户权限管理很丰富的特点所以选了这个软件。我用的不是最新版。标准版与专业版付费。个人版免费(试用期30天结束后自动变为个人免费版)。

现在官网可以下载中文版了。英文版也可以通过面板右键更换语言配置文件来更改语言。

1. 进入安装界面

默认路径,一路下一步,安装完成。

2. 安装完成

使用管理员身份运行。

3. 新建一个SFTP服务器

因为是将本地电脑作为服务器,所以地址填: 127.0.0.1

端口号:22

传输协议:SSH2

注释:随便

单机 确定 创建一个本地服务器。

4. 添加用户

新建一个用户,并设置用户的主目录和访问权限。Xlight做SFTP服务器的好处就是用户权限设置丰富。

5. 中文文件名支持设置

这一步很重要。勾选对所有STP版本强制使用UTF8编码,解决客户端无法传输中文文件的问题,因为Xlight默认不支持中文文件名,会显示乱码,强制UTF8编码就好了。同时要注意的是FTP客户端也要强制使用UTF8编码。

6.启动服务器

7. 本地连接测试

随便用一个FTP客户端连接。我用的Filezilla。记得在字符集里修改强制使用UTF-8编码。

连接成功。

四、公网访问


1. 创建隧道

打开 Cpolar Web UI

协议:TCP

本地地址:22

端口类型:免费版只能用随机端口,24小时后会重置。付费版可以使用预留的固定端口,稳定一点。

在在线隧道列表查看隧道的公网地址。

2. 公网访问

3. 成功

五、Debug&Test 调试记录

服务器端的其他设置自行探索吧。Xlight自带的帮助文档是中文的,挺方便。

编辑于 2022-11-22 04:38・IP 属地北京
评论千万条,友善第一条

1 条评论
默认
最新
BrokenSymtry
有的FTP客户端字符集就用默认也可以,如果出现乱码或者无法读取等报错的话就强制UTF8。
2022-11-22 · IP 属地北京

文章被以下专栏收录


来自  https://zhuanlan.zhihu.com/p/585385195?utm_id=0


普通分类: