更新: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自带的帮助文档是中文的,挺方便。