目录
一、前言
1.基于OpenSSH+WinSCP实现文件传输
OpenSSH(免费开源可商用-OpenBSD开源协议),是SSH协议的免费开源实现。SSH协议族可以用来进行远程控制,或在计算机之间传送文件。而实现此功能的传统方式,如telnet、rcp、ftp、rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据由此来代替原来的类似服务。在本方案中,充当SFTP服务端的角色。
WinSCP(免费开源可商用-GNU开源协议),是Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。WinSCP可以连接到一台提供SFTP 或SCP 服务的SSH 服务器,主要功能就是在本地与远程计算机间安全的复制文件。
优点:可进行windows和linux之间,windows和windows间的文件传输。WinSCP可以使用powershell命令行操作,免交互确认。
缺点:需要在远程主机上安装OpenSSH。
二、环境准备
2.1 服务端
(1)从GitHub上下载OpenSSH-release-V8.6最新免安装版,https://github.com/powershell/Win32-OpenSSH,如图:

图 OpenSSH-release-V8.6下载页面
(2)将所下载的文件进行解压,其中解压路径可以自定义,无特殊限制。本方案中解压路径为C:\Program Files\OpenSSH,如图:

图 OpenSSH-release-V8.6解压后文件示意图
(3)使用命令行注册服务,然后启动服务进行使用。
- 服务注册
使用如下命令进行服务注册,如图:
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
图 服务注册示意图
- 服务启动
服务注册完,会在windows服务中看到2个新的服务OpenSSH SSH Server和OpenSSH Authentication Agent,鼠标右键属性,打开设置界面,可以将该服务启动方式设置为自动,即可实现开启自启。如图:
图 注册系统服务后效果图

图 设置服务开机自启
其中服务OpenSSH SSH Server需要使用到TCP/IP协议进行通信。该服务启动之后,会存在一个进程sshd,该进程默认端口号为22。可在配置文件sshd_config中进行端口重写,重启服务即可完成更改。
2.2 客户端
(1)WinSCP官网下载安装(https://winscp.net/eng/download.php)如图:

图 WinSCP下载示意图

图 WinSCP安装界面
三、软件操作方式
3.1 视图操作
在桌面快捷方式或WinSCP安装目录下,可以双击"WinSCP.exe"打开客户端界面,然后进行可视化界面操作如图:

图 WinSCP安装目录
图 WinSCP图形化界面
应自动化发布及部署平台要求,命令行操作将作为重点内容进行研究,可视化界面操作方式本文不再阐述。
3.2 命令行操作
WinSCP工具也可支持命令行操作,双击WinSCP.com,打开命令行界面,如图:

图 WinSCP命令行界面
命令行界面,在连接服务端时,可进行免交互认证。免交互认证的方式将在第四章中详细介绍。而命令行操作也可支持文件类型的参数,即是将多条脚本编排于*.txt文件中,入参文件路径,即可实现脚本文件的调用。下面将以调用脚本文件的形式,演示文件上传、文件下载的具体流程。
四、操作流程
4.1 文件上传
4.1.1 文件上传脚本编排
文件上传脚本upload.txt,编排如图:

图 文件上传脚本
4.1.2 文件上传
使用WinSCP.com完成脚本文件调用,入参语法及命令行日志输出如图:
图 文件上传过程
去服务端主机观测文件上传效果,该文件已存在于D:\install\WinSCP-5.19.5-Setup.exe下,说明命令行的文件上传操作已经成功。如图:

图 文件上传成功
4.2 文件下载
4.2.1 文件下载脚本编排
文件下载脚本download.txt,编排如图:
图 文件下载脚本
4.1.2 文件下载
使用WinSCP.com完成脚本文件调用,入参语法及命令行日志输出如图:

图 文件下载过程
在客户端主机观测文件下载效果,该文件已存在于D:\install\WinSCP-5.19.5-Setup.exe下,说明命令行的文件上传操作已经成功。如图:

图 文件下载成功
五、实验过程
5.1 实验目的
使用winscp命令行建立sftp会话,进行大文件传输,查看耗时。
5.2 实验环境
为便于对照实验的结果分析,所选用的2台windows主机的环境,均为刚装机后的初始化环境,客户端和服务端的工作磁盘均为虚拟机精简磁盘,前者剩余空间203GB、后者为97GB。

图 实验环境
5.3 实验记录
由客户端向服务端上传文件,观察传输耗时并记录如下:

图 实验耗时记录
5.4 实验总结
在整个传输过程中,最大传输速率约为22.4MB/s,平均传输速率约为21.0MB/S。在传输进度50%左右速率回落,达到最低传输速率约为20.0MB/S。
在1.86GB和4.25GB文件传输下,以上数据大致相同。考虑到主流虚拟机相对于物理机,cpu性能平均下降10%,内存性能平均下降10%,而磁盘性能损耗大一些,具体损耗数据需要继续求证。但是,总得来说,winscp大文件传输,性能表现还算良好。