Windows 部署SFTP服务端

需求:工作中需要接收外部机构的文件,要搭建一个SFTP服务器。Linux中SFTP是自带的服务,Windows上要额外安装软件,这里用免费的FreeSSHd,配置很简单。但也有局限性,听说FreeSSHd 从2009年就停止维护了,所以要搭建SFTP服务首选还是Linux系统。

1、下载和安装FreeSSHd

下载链接:http://www.freesshd.com/?ctt=download

安装过程一路选“是”,除了下图这一步是/否都可。

Windows 部署SFTP服务端_第1张图片

 

2、配置与运行

启动时要右键选择管理员身份启动,否则后面有坑。要配置的几个地方:

  • 创建用户Users:一般选择Password和Public key两种方式,先选择Password。

Windows 部署SFTP服务端_第2张图片

 

  • 配置SSH: 这里IP、端口和最大连接数可以按需配置,最大连接数0表示不限制,我保持默认。

Windows 部署SFTP服务端_第3张图片

  • 认证方式:上面选择了Password认证方式,这里要选Allowed或者Required(选Required的话,即使是公钥登录也要输密码)。

Windows 部署SFTP服务端_第4张图片

 

  • 配置SFTP映射路径:就是想让用户看到的文件路径。这里只能配置一个,不能依据用户区分。

Windows 部署SFTP服务端_第5张图片

以上参数配置好后,就可以测试了,其余的参数可以根据需求改改。注意每改完一个参数后,一定要点应用。

配置完所有参数后,在Server status界面重启下SSH服务。

Windows 部署SFTP服务端_第6张图片

 

4、连接测试

网上有很多Windows上访问SFTP的客户端软件,我用WinSCP,输入IP和刚刚的用户密码就可以访问了。

WinSCP下载:https://winscp.net/eng/docs/lang:chs#%E4%B8%8B%E8%BD%BD

Windows 部署SFTP服务端_第7张图片

 

5、用秘钥访问SFTP

秘钥访问比用户名密码访问的配置复杂一点,但优点是以后用户每次访问不再需要输密码,能直接访问。原理可百度。

(1)首先,要在SFTP的客户端生成一对公钥和私钥,WinSCP有自带的功能可以生成(还可以选择用git,SecureCRT等工具),操作如下,选择使用putty生成秘钥对。

Windows 部署SFTP服务端_第8张图片

(2)点击Generate, 就生成了一对公钥和私钥,上面方框里的内容就是公钥,全选复制,保存在一个以访问用户名称命名的文本文件里,例如sftpuser1;然后点击Save private key保存私钥到本地。

注意:不要点击Save public key来保存公钥,因为这样保存后的格式和上面方框中的不同,多了些没用的内容,会导致服务端将公钥识别为一个无效的公钥。(这个坑我研究了一小时才发现原因,后来用别的工具生成秘钥对登录成功了,对比公钥内容才发现之前生成的公钥格式有问题。)

Windows 部署SFTP服务端_第9张图片

(3)将刚刚保存的公钥文件发给SFTP服务端,服务端需要将公钥保存在下图配置的公钥文件夹内。下面Password认证要配置Allowed或Disabled, Public Key认证选择Allowed。

Windows 部署SFTP服务端_第10张图片

另外用户设置中的认证方式要改成公钥方式:

Windows 部署SFTP服务端_第11张图片

(4)回到SFTP客户端,还是用WinSCP访问,点击高级,指定私钥文件的路径,点击确定后登陆,大功告成。

Windows 部署SFTP服务端_第12张图片

 

6、报错处理:

(1)“拒绝访问”:

解决方式:服务端重启FreeSSHd,一定要右键以管理员身份启动。

(2)“Server refused public-key signature despite accepting key!”:

解决方式:一般是服务端的公钥文件缺失或者文件格式不对造成的,检查一下公钥文件放的位置是否正确,内容是否和当初生成的格式一致,文件名也必须与登录用户名一样,不能有后缀。

Windows 部署SFTP服务端_第13张图片

 

Windows 部署SFTP服务端_第14张图片

你可能感兴趣的:(其他)