您的位置:首页 > 运维架构

Openssh服务器的搭建,并使用PSFTP实现文件自动上传,下载的script命令

2011-05-18 14:40 1016 查看
才来这家公司被分配一个任务协助经理完成SSH Server的搭建,并且要实现客户端直接向服务器端上传文件。OK废话少说首先先来搭建服务器的步骤!
(1)下载
服务器端我们使用openssh,它自带了cygwin环境以及scp/sftp的服务器(sftp是ssh的一个“子服务”,在ssh通道中使用某个命令在需要时激活)。 http://sourceforge.net/project/showfiles.php?group_id=103886&package_id=111688&release_id=252007在该页面中我们下载SSHWindows-Installer, 3.8p1-1 20040709 Build这个程序即可。(如图1)



而客户端我们则采用的是winscp软件,他是一款图形化界面的软件,界面操作类似于ftp软件,很好上手。我们到 http://sourceforge.net/project/showfiles.php?group_id=85589这个地址下载WinSCP 3.8.2。
 



配置sftp服务端:
sftp服务端的安装与配置还是比较简单的,通过几条命令就可以开启sftp服务。
第一步:将之前下载的sftp服务端解压缩,然后直接运行主程序。点“NEXT”按钮进行下面的操作。


(如图3)
第二步:在许可协议窗口处填写“同意”并点“下一步”按钮继续。




第三步:在接下来的配置窗口中选择要安装的组件,从界面中我们可以看到包括client(客户端)与server(服务器端),实际上我们只需要服务器端,而客户端我们使用之前下载的WinSCP 3.8.2即可。选择相应的服务器端组件后点“下一步”按钮继续。(如图5)



第四步:选择程序安装的路径,默认是c:\program files\openssh,建议大家不修改这个缺省地址。(如图6)



第五步:默认情况下openssh将添加一个应用程序到开始程序中,名字叫做openssh for windows。



第六步:安装的最后openssh会自动建立ssh安全加密key,保证SSH传输过程中的安全可靠。



第七步:完成所有安装工作,点“完成”按钮回到桌面。(如图9)



第八步:接下来就要启动该服务了,我们通过“开始->运行->输入CMD后回车”进入到命令提示窗口,然后通过cd命令定位到c:\programfiles\openssh\bin目录。(如图10)




第九步:依次执行mkgroup -l >> ..\etc\group mkpasswd -l >> ..\etc\passwd命令,这样你目前windows本地帐户中的用户就都可以登录该sftp服务器了,他们自对文件目录的访问权限和NTFS权限一致。此步骤相当于FTP中的建立访问帐号。(如图11)



第十步:添加完各个访问帐户后我们可以到c:\program files\openssh\etc目录中来查看group和passwd两个文件的内容,当然这些内容是经过了加密的。(如图12)



这两个文件存储的都是帐户相关信息,正如前面所说他们是从unix移植过来的,配置方式仍然使用了conf文件的方式,几乎没有图形界面。而且这些配置文件一般用unix换行符,建议各位IT168读者使用ultraedit等工具而不是notepad来编辑,一是确保能正常显示,二是确保保存时不会破坏它的格式导致服务程序无法读取。(如图13)
 



第十一步:最后在刚才进入的c:\program files\openssh\bin目录下执行net start opensshd命令,这将启动opensshd服务,我们就可以开始访问了。(如图14)
 



小提示:一般sftp用默认的22端口发布服务就行。如果你有特殊的原因要把这个端口改掉,请编辑C:\ProgramFiles\OpenSSH\etc\sshd_config文件,把这一行改成你要的端口,比如8029,设置完毕后需要重启openssh服务(任何配置改动都需要重启服务)。
至此服务器端的配置完成,下面我们来介绍如何在客户端上访问建立的sftp服务。
小提示:如果以后要继续添加访问帐户的话,首先在windows中加上这个用户,例如我们以名为sftp的帐户为例,设置密码,确保不要选中“下次登录必须改密码”。这个用户的权限和用户组由你来决定。然后进入c:\program files\openssh\bin目录,执行mkpassword -l -u sftp>> ..\etc\passwd命令即可将刚才添加的sftp帐户添加到访问权限中。说白了指令加-u是加单独一个帐户,没有-u参数的话将把当前系统中所有帐户添加到容许访问sftp服务器的帐户列表中。
配置sftp客户端就更加简单了,由于之前我们已经下载了WinSCP 3.8.2,所以直接运行该程序即可出现登录配置界面。(如图15)



我们根据实际填写sftp服务器的地址和访问帐户信息,协议方面保持默认的sftp (allow scp fallback)即可,完成设置后点login登录按钮后会出现“使用提示”信息,不用理会继续即可。(如图16)
 



登录进入服务器后我们会看到界面显示和我们之前熟悉的ftp登录工具一样,特别是和flashfxp登录FTP服务器类似。右边是我们看到的sftp服务器发布的目录。(如图17)
 



当然这个默认发布目录可能不是我们希望看到的,如果想要访问你的C盘,我们可以先把焦点放在服务器那半边窗口,然后按ctrl+o,输入/cygdrive/c并回车,这样就可以把这个目录加到winscp的书签或者作为登录时的默认目录。(如图18)
 



五、总结:
当我们要关闭sftp服务时只需要在服务器端对应目录执行net stop opensshd指令即可,这样对应服务将自动关闭。(如图19)另外如果在客户端上无法访问sftp服务器的话,很可能是因为XP系统自带防火墙捣乱,我们关闭防火墙或者手动在windows防火墙配置中允许c:\Program Files\OpenSSH\usr\sbin\sshd.exe程序的执行和对网络的访问即可。
好了!相信大家都可以从网络上找到上面的资料,如果只是做了这么一点点我也不需要继续开展以下的博文了,正如标题所说我要开始的是客户端自动运行上传或者下载的任务,这里我们当然要直接使用SCRIPT command的方式来实现,不然每天都手工去上传不把人累死 经理还以为我们这些IT都白养了,网络上找了好多都没有一篇能实现自动登陆,不是在服务器定位这边卡住就是在用户passwd输入时候停了
(1)首先在下载PSFTP.EXE,试验了很多就这个能实现auto login。下载完成后直接在c盘下建个文件夹SFTP来放置psftp.exe如图



(2)下面我们试验一下用psftp.exe实现自动登陆
我开的client用户名:sftp 密码:P@ssw0rd //(0数字零)。
在dos命令行下进入c:\SFTP文件夹输入命令如下psftp sftp@127.0.0.1 –pw P@ssw0rd
//sftp(username)@127.0.0.1(server ip这里是本机如果是远程服务器输入它的ip地址) -pw(后面跟的是密码)



可以看到自动登陆到了服务器并且自动输入了用户名和密码,哈哈有了这样的方法就能实现用.bat文件自动上传下载了!下面我们来验证自动上传下载
我们分别先建2个文件,一个叫upload.txt 和download.txt分别放置在C:\SFTP和C:\Program Files\OpenSSH也就是psftp和openssh的2个安装文件夹!






下面我们来建一个.bat的文件主要实现将upload.txt上传和 download.txt下载。传输结束后应该是Openssh文件夹中多了一个upload.txt文件,而sftp文件夹中多了一个download.txt文件。
我们直接在SFTP文件夹下编写2个script,1个用来联结SFTP服务器并且同步文件,另一个用来执行上传和下载文件命令。我这里分别较sync.bat和tranf.scr,他们的内容分别如下:
Sync.bat的内容
cd c:\sftp
psftp sftp@127.0.0.1 -pw P@ssw0rd -b tranf.scr
pausa
bye
close
tranf.scr的内容
put upload.txt
get download.txt
sync.bat首先进入sftp文件夹才能使用PSFTP命令,然后输入用户名密码并且调用tranf.scr中的内容实现下载和上传的命令!




 
用文本文件编写然后分别保存为各自格式,好了下面来我们见证奇迹的时刻吧!双击直接运行sync.bat command对话框一闪后就消失了,然后我们惊奇的发现2个文件夹下分别都多了一个文件。
 






是不是很兴奋啦!好啦现在基本能实现上传根下载的自动了!也不枉费我花这么多时间来到网络上找资料了,就是目前还有个问题,因为小弟几乎不懂linux的命令所以我不知道如何定位文件的位置,不知道在LINUX命令行中如何写windows文件夹位置的脚本。希望有懂的高手们能教下小弟。在此谢过!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: