ftp协议设计之初,分为了主动工作模式和被动工作模式,这两种工作模式一个是需要在服务器端随机开一个端口,让客户端连接这个新开的端口进行数据传输,一个是在ftp客户端随机开一个端口供服务器端主动连过来进行通讯,不管是哪一种对于有防火墙或者nat代理的网络都是极其不友好的,而且ftp通讯协议可以被wireshark等抓包工具轻易的抓出来登录ftp的用户名和密码,属于很不安全的一种通讯协议。
sftp协议基于tcp协议,只需要一个tcp端口即可完成全部的数据传输工作,对防火墙友好,通讯过程加密,不会被人轻易发现sftp的登录账户和密码信息,很适合作为ftp的替代品。
sftpgo使用golang开发,可以跨多个硬件平台,x86/arm/mips都能用,windows/linux操作系统都支持,部署的时候也很方便,特别是linux下面,不需要有一大堆依赖需要安装,在一些不能联网的企业内部网络中进行部署较为方便。
下面以windows平台为例说明sftpgo的配置使用过程:
1. 软件的获取
github里面release里面最新版本的windows安装程序,下载后复制到服务器内。
2.安装
闭着眼睛下一步下一步就行。
3.配置
windows平台的sftpgo软件,特别是安装版本的,会默认安装一个sftpgo的系统服务,通过查看该服务,可以发现该服务会去 C:\ProgramData\SFTPGo这个目录里面去找配置参数文件,默认情况下 C:\ProgramData\这个路径在windows资源管理器里面是不显示的,直接复制这个地址到资源管理器地址栏去访问就可以打开了。
打开 C:\ProgramData\SFTPGo目录后,里面有一个sftpgo.json文件,该配置文件的内容如下:
默认情况下,sftpgo会在tcp的2022端口进行监听,需要改端口的话去修改2022端口,默认情况下,web管理后台只会在127.0.0.1的8080端口进行监听,想让任意IP都可以访问,可以修改httpd-bindings下面的配置参数,改成0.0.0.0就可以从本机以外的IP访问了,不过这样配置不太安全,建议通过web配置完以后还是改回去127.0.0.1。
4.web 管理后台
输入用户名和密码登录管理后台
登录以后第一件事先去把管理员密码改掉,admins-edit admin,之后就是建立新用户,如下图:
用户建好以后可以用winscp 进行测试,特别是有防火墙的地方,端口一开效果非常的好啊。