众所周知在
Windows 系统和Linux类系统的最大区别就在于他的非开源性,因此在
Windows 下我们传输文件,共享资源主要通过FTP
协议 来实现,和以前的TFTP
协议 相比FTP提供了必要的
安全 保证措施,然而对于一些要求网络
安全 级别比较高,需要严格防范传输数据被监听工具窃取的情况来说,FTP
协议 就无法胜任了,这时我们应该寻找更加安全的传输协议来保证
服务器 的安全。今天笔者就为各位IT168的读者介绍在Windows下如何通过sftp打造安全传输。
一、什么是sftp?
一般来说两 台机 器间的文件传输,除了常用的ftp以外,还可以通过scp/sftp协议(就是本文介绍的sftp)进行。下面我们就来看看sftp协议与ftp协议之间的差别。
(1)和ftp不同的是sftp/scp传输协议默认是采用加密方式来传输数据的,scp/sftp确保传输的一切数据都是加密的。而ftp一般来说允许明文传输,当然现在也有带SSL的加密ftp,有些 服务器 软件 也可以设置成“只允许加密连接”,但是毕竟不是默认设置需要我们手工调整,而且很多用户都会忽略这个设置。
(2)普通ftp仅使用端口21作为命令传输。由服务器和客户端协商另外一个随机端口来进行数据传送。在pasv模式下,服务器端需要侦听另一个口。假如服务器在 路由 器或者 防火墙 后面,端口映射会比较麻烦,因为无法提前知道数据端口编号,无法映射。(现在的ftp服务器大都支持限制数据端口随机取值范围,一定程度上解决这个问题,但仍然要映射21号以及一个数据端口范围,还有些服务器通过UPnP协议与 路由器 协商动态映射,但比较少见)
(3)当你的网络中还有一些unix系统的机器时,在它们上面自带了scp等客户端,不用再安装其它软件来实现传输目的。
(4)scp/sftp属于开源协议,我们可以免费使用不像FTP那样使用上存在安全或版权问题。所有scp/sftp传输软件(服务器端和客户端)均免费并开源,方便我们开发各种扩展插件和应用组件。
小提示:当然在提供安全传输的前提下sftp还是存在一些不足的,例如他的帐号访问权限是严格遵照系统用户实现的,只有将该帐户添加为 操作系统 某用户才能够保证其可以正常登录sftp服务器。
二、下载 所需程序:
本文介绍的所有工具都不是诞生于windows系统的,他们是从unix移植过来的,配置方式仍然使用了conf文件的方式,几乎没有图形界 面。而且这些配置文件一般用unix换行符,所以建议各位读者使用ultraedit等工具而不是notepad来编辑,一是确保能正常显示,二是确保保 存时不会破坏它的格式导致服务程序无法读取。
服务器端我们使用openssh,它自带了cygwin环境以及scp/sftp的服务器(sftp是ssh的一个“子服务”,在ssh通道中使用某个命令在需要时激活)。
打开浏览器访问 下载 SSHWindows-Installer href="http://sourceforge.net/project/showfiles.php?group_id=103886&package_id=111688&release_id=252007" target=_blank>这里,在该页面中我们 下载 SSHWindows-Installer, 3.8p1-1 20040709 Build这个程序即可。
sftp服务端的安装与配置还是比较简单的,通过几条命令就可以开启sftp服务。
第一步:将之前下载的sftp服务端解压缩,然后直接运行主程序。点“NEXT”按钮进行下面的操作。(如图3)
至此服务器端的配置完成,下面我们来介绍如何在客户端上访问建立的sftp服务。
小提示:如果以后要继续添加访问帐户的话,首先在windows中加上这个用户,例如我们以名为softer的帐户为例,设置密码,确保不要 选中“下次登录必须改密码”。这个用户的权限和用户组由你来决定。然后进入c:/program files/openssh/bin目录,执行mkpassword -l -u softer >> ……/etc/passwd命令即可将刚才添加的softer帐户添加到访问权限中。说白了指令加-u是加单独一个帐户,没有-u参数的话将把当前系统中 所有帐户添加到容许访问sftp服务器的帐户列表中。
四、配置sftp客户端:
配置sftp客户端就更加简单了,由于之前我们已经下载了WinSCP 3.8.2,所以直接运行该程序即可出现登录配置界面。(如图15)
当我们要关闭sftp服务时只需要在服务器端对应目录执行net stop opensshd指令即可,这样对应服务将自动关闭。(如图19)另外如果在客户端上无法访问sftp服务器的话,很可能是因为XP系统自带 防火墙 捣乱,我们关闭防火墙或者手动在windows防火墙配置中允许c:/Program Files/OpenSSH/usr/sbin/sshd.exe程序的执行和对网络的访问即可。
一般来说两 台机 器间的文件传输,除了常用的ftp以外,还可以通过scp/sftp协议(就是本文介绍的sftp)进行。下面我们就来看看sftp协议与ftp协议之间的差别。
(1)和ftp不同的是sftp/scp传输协议默认是采用加密方式来传输数据的,scp/sftp确保传输的一切数据都是加密的。而ftp一般来说允许明文传输,当然现在也有带SSL的加密ftp,有些 服务器 软件 也可以设置成“只允许加密连接”,但是毕竟不是默认设置需要我们手工调整,而且很多用户都会忽略这个设置。
(2)普通ftp仅使用端口21作为命令传输。由服务器和客户端协商另外一个随机端口来进行数据传送。在pasv模式下,服务器端需要侦听另一个口。假如服务器在 路由 器或者 防火墙 后面,端口映射会比较麻烦,因为无法提前知道数据端口编号,无法映射。(现在的ftp服务器大都支持限制数据端口随机取值范围,一定程度上解决这个问题,但仍然要映射21号以及一个数据端口范围,还有些服务器通过UPnP协议与 路由器 协商动态映射,但比较少见)
(3)当你的网络中还有一些unix系统的机器时,在它们上面自带了scp等客户端,不用再安装其它软件来实现传输目的。
(4)scp/sftp属于开源协议,我们可以免费使用不像FTP那样使用上存在安全或版权问题。所有scp/sftp传输软件(服务器端和客户端)均免费并开源,方便我们开发各种扩展插件和应用组件。
小提示:当然在提供安全传输的前提下sftp还是存在一些不足的,例如他的帐号访问权限是严格遵照系统用户实现的,只有将该帐户添加为 操作系统 某用户才能够保证其可以正常登录sftp服务器。
二、下载 所需程序:
本文介绍的所有工具都不是诞生于windows系统的,他们是从unix移植过来的,配置方式仍然使用了conf文件的方式,几乎没有图形界 面。而且这些配置文件一般用unix换行符,所以建议各位读者使用ultraedit等工具而不是notepad来编辑,一是确保能正常显示,二是确保保 存时不会破坏它的格式导致服务程序无法读取。
服务器端我们使用openssh,它自带了cygwin环境以及scp/sftp的服务器(sftp是ssh的一个“子服务”,在ssh通道中使用某个命令在需要时激活)。
打开浏览器访问 下载 SSHWindows-Installer href="http://sourceforge.net/project/showfiles.php?group_id=103886&package_id=111688&release_id=252007" target=_blank>这里,在该页面中我们 下载 SSHWindows-Installer, 3.8p1-1 20040709 Build这个程序即可。
三、配置sftp服务端:
sftp服务端的安装与配置还是比较简单的,通过几条命令就可以开启sftp服务。
第一步:将之前下载的sftp服务端解压缩,然后直接运行主程序。点“NEXT”按钮进行下面的操作。(如图3)
第七步:完成所有安装工作,点“完成”按钮回到桌面。(如图9)
至此服务器端的配置完成,下面我们来介绍如何在客户端上访问建立的sftp服务。
小提示:如果以后要继续添加访问帐户的话,首先在windows中加上这个用户,例如我们以名为softer的帐户为例,设置密码,确保不要 选中“下次登录必须改密码”。这个用户的权限和用户组由你来决定。然后进入c:/program files/openssh/bin目录,执行mkpassword -l -u softer >> ……/etc/passwd命令即可将刚才添加的softer帐户添加到访问权限中。说白了指令加-u是加单独一个帐户,没有-u参数的话将把当前系统中 所有帐户添加到容许访问sftp服务器的帐户列表中。
四、配置sftp客户端:
配置sftp客户端就更加简单了,由于之前我们已经下载了WinSCP 3.8.2,所以直接运行该程序即可出现登录配置界面。(如图15)
当我们要关闭sftp服务时只需要在服务器端对应目录执行net stop opensshd指令即可,这样对应服务将自动关闭。(如图19)另外如果在客户端上无法访问sftp服务器的话,很可能是因为XP系统自带 防火墙 捣乱,我们关闭防火墙或者手动在windows防火墙配置中允许c:/Program Files/OpenSSH/usr/sbin/sshd.exe程序的执行和对网络的访问即可。