机房维护的服务器有window和linux,每个月要巡检一个脚本,需要定时上传的一台windows的服务器,windows传windows的已经写好的bat脚本,见前一篇,http://qujunorz.blog.51cto.com/6378776/1363498,使用的挂载网络共享盘的方式,但是很不美观,而且linux上传的话不一定每台都装了ftp,这就考虑到了在windows服务器上安装sftp服务。


经过在网上查询一番,发现有个Freesshd的免费的东东,可以直接搭建ftp和sftp服务器。据说还有winsshd也很神奇,但是没来的及去试。


直接百度一搜,官网上下载,7百多K。


然后就是安装,安装的时候会问你要不要生产private秘钥,无所谓。

问你要不要作为系统服务,这个还不错,可以随操作系统重启而自动启动。

这时候桌面右下角应该会有个freesshd的图标了,双击打开进行配置。

window server 下搭建sftp服务器,Freesshd安装及配置

如果只是配置sftp的,只需要在ssh那边把IP地址填好本机,然后端口什么的都默认,再应用一下,就可以点击启动ssh服务了。

但是有可能会报“generic error for access violation”,其实是Freesshd的系统服务把22端口占用了,你可以先把服务停了,再点击启动,再启动系统服务。

然后配置一下sftp的主目录,users增加一下本地用户,据说windsshd是继承本地用户的,没有试过,不清楚。

恩,最后winscp测试一下,可以用了。。

补充:

Windows查看端口被占用的程序!引用自:http://hi.baidu.com/tian*/item/3f4178997aecff8959146176

"到底是谁占用了80端口,该怎么查,怎么终止它?",这里就简单讲解一下,在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等.

        这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入"cmd"后点击确定按钮,进入DOS窗口,接下来分别运行以下命令:

        >netstat -aon | findstr "80"

                Proto   Local Address           Foreign Address         State             PID

                ====   ============       ==============   ==========   ======

                TCP     0.0.0.0:80                     0.0.0.0:0                 LISTENING       1688

可以看出80端口被进程号为1688的程序占用.

        >tasklist | findstr "1688"

                图像名                                                 PID             会话名                     会话#       内存使用

              ========================= ====== ================ ======== ============

              inetinfo.exe                                         1688           Console                       0               2,800 K

很明显,是inetinfo占用了80端口;inetinfo.exe主要用于支持微软Windows IIS网络服务的除错,这个程序对你系统的正常运行是非常重要的.

        当然,并不是只有inetinfo.exe进程会占用80端口,这只是我机器上的情况.如果你并不了解此进程是干什么用的,千万不要盲目地将其kill掉,最好先百度或Google搜索一下;当然如果你很了解它,并确定可以终止,那么继续下面的命令.

        >taskkill /pid 1688 /F

成功: 已终止 PID 为 1688 的进程。

如果你很熟悉此进程,并确定可以终止,那么就直接使用上面的命令把PID为1688的进程终止.(这一步同样可以在任务管理器中执行,inetinfo.exe就是任务管理器中的映像名称,选中它,点击"结束进程"即可)

        >tasklist | findstr "1688"

再次确认是否成功终止,如果成功终止此次执行命令后应返回空.