基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

一、背景:

最近一个老系统生产环境出现了问题,这个系统的其中之一功能是:每天定时任务,从数据库采集数据,按照指定口径,生成报文,然后定时进行上传到远端SFTP服务器上,再另外的固定时间点,再下载今日上传报文的解析结果文件。

二、问题:

报送环节,上传到远端SFTP服务器的文件出现编码错误,本地文件是UTF-8格式,但是偶然会出现报送文件为:UTF-8-BOM

三、排查:

排查了java代码后,未能发现其中的问题,所以想到是否是建立SFTP通道时,将文件读取成流,然后上传过程中出现了问题,但测试环境没有SFTP服务器,只能自己搭建一个进行测试了。

四、搭建使用软件:经过网络搜索,确定使用freeSSHd免费软件进行搭建,不过网上太多的博客都是互相抄袭,而且很多博客的软件配置都不能使用,多方入坑,最后自己搞定了,这里记录一下,希望可以帮到看到的读者。

五、下载地址:http://www.freesshd.com/?ctt=download 当前最新版本是1.3.1,我也是使用这个版本

六、安装过程:

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

全部下一步,不用任何特殊设置,但是注意!!!安装完成后,会弹出两个窗口:

1,询问是不是要现在生成私钥private key,选择是

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

2,询问是否要把freeSSHd当作系统的一个服务自启动,这里我选择了否,推荐选择否,啥时候用啥时候启动呗。

3,安装完成后,双击桌面图标,会出现下图提示,点击ok后窗口就消失了

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

4,此时不要去再点击桌面上的图标了,去右下角任务栏隐藏展开,就能看到软件已经启动了

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

七、软件配置

1,打开软件后,如图所示:四个红框位置是需要我们配置的

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

2,ssh的配置:Listen address,这里我选的是本机的ip,port端口号,我为了防止冲突,自己随意选了一个

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

3,Authentication这里,默认就好,如图:

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

4,SFTP这里,设置的是远端SFTP的目录,自己找个目录定义即可,如果默认值的话,一般是系统用户下目录:

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

5,接下来是Users设置:如图add,选择密码验证方式,勾选SFTP

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

6,以上操作完成后,回到Server status,点击红框位置,可以看到 SSH server is running

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

到这里,sftp服务器就配置完成了

八、测试连接,打开cmd窗口,输入命令 sftp -P 1119 [email protected] 此处P要大写

基于freeSSHd软件构建SFTP服务器(用于开发测试SFTP服务器文件上传下载服务)

连接成功。

注意:如果测试连接时,一直提示密码输入错误,可以试着关闭freeSSHd软件进程,然后以管理员身份重新运行这个软件,不过要注意检查自己的Users配置,SSH配置,Authentication配置。我写本文测试时依然遇到了一直输入密码提示错误的问题,然后重启了后发现,自己的Users配置没了,估计是管理员与默认启动方式的配置文件不同,重配一下就登陆成功了。